0

私は次のような小さなAppleスクリプトを持っています:

beep
delay 2
tell application "Finder" to activate

音が鳴り、2秒待ってから、「Finder」ウィンドウを前面に表示します。

コマンドラインから実行すると、正常に動作します。

次に、PHPがexec()php関数を使用してそのスクリプトを呼び出すようにします。

<?
$cmd = "/usr/bin/osascript \"myscript.scpt\"";
exec($cmd);
?>

それでも問題なく動作します。

しかし、同じPHPスクリプトをブラウザーから呼び出すと、機能しません。PHPが起動し、ビープ音が聞こえるのでAppleスクリプトも起動しますが、最後の行は実行されません。

それは環境変数になると思ったので、それらがすべてターミナルと同じようになっていることを確認しました。

$cmd = "HOME='/Users/mikael' && … && /usr/bin/osascript \"myscript.scpt\"";

変数は適切に設定されていますが(env | sortで確認)、ブラウザーに表示されたphpスクリプト内でAppleスクリプトを実行し、標準のMacOSapacheのものを使用してもうまくいきません。

何か案が?

4

3 に答える 3

1

PHPから実行する場合osascript、Webサーバーを介して、ログインコンテキストで実行されないため、デスクトップで実行されているアプリケーション(Finderなど)にAppleイベントを送信できません。osascriptSSH経由で使用しようとすると、同様の問題が発生することがわかります。

ログインコンテキストは、OS Xの複雑で文書化されていない領域です。それらについて詳しく知りたい場合は、AmitSinghのMacOS X Internals: ASystemsApproachのコピーを入手することをお勧めします。

ただし、そうでない場合、答えは一般的に非常に単純ですosascript。Webサーバーから正しく動作することに依存しないでください。

于 2013-02-04T00:09:41.750 に答える
0

OK、ブラウザ内からPHPからAppleスクリプトを呼び出せる方法を見つけたかもしれません。

それは完全に満足のいくものではありませんが、これは私がやろうとしていることです:

したがって、基本的に、デフォルトのmacOS apacheサーバーを使用する代わりに、WebサーバーとMySQLをセットアップするサーバーを使用します:http://www.mamp.info/en/index.html

私はMAMPについて言及しますが、他にもあるかもしれません。

私のAppleスクリプトは、最終的にそのソリューションを使用して完全に実行されます。

于 2013-02-04T00:57:45.907 に答える
0

私も同じ問題を抱えていて、apacheがユーザーwwwとして実行されることに気づきました。これは、etc / apache2/httpd.confを編集して変更できます。ユーザーをユーザーの短縮名に変更し、グループをスタッフに変更します。

于 2013-04-26T06:31:06.053 に答える