1

ZendフレームワークとphantomJSを使用して、作業しているサイトの画像をレンダリングしています。キュー内のジョブをループして検索するジョブリスナースクリプトがあります。ジョブを見つけると、ジョブメッセージのデータを使用してphantomJSコマンドを作成し、phpのEXECコマンドを介してコマンドを実行します。

このプロセスは、コマンドラインから自分でジョブリスナーを起動する場合にうまく機能します。ただし、デーモンユーザー(OS XではWebユーザー)がphantomJSを実行しようとしても、何も起こりません。エラーメッセージはありません、何もありません。


1.この行をsudoersデーモンALL=NOPASSWDに追加する:/ usr / bin /
phantomjs2.phantomjsとその親ディレクトリに777権限を付与するなどのいくつかのことを試しました。
3.デーモンにphantomjsの所有権を与える

しかし、それにもかかわらず、デーモンユーザーからphantomJSを実行することはできません。

誰かが私を正しい方向に向けたり、いくつかの提案を追加したりすることができれば、私は非常に感謝しています。

前もって感謝します、

ダン

4

1 に答える 1

2

EXEC コマンドで実行する代わりに、phantomjs スクリプトをサービスのように実行してみてください。

Mongoose と呼ばれる組み込みの Web サーバー モジュールを使用して、PhantomJS スクリプトは Web サーバーを起動できます。これは、PhantomJS スクリプトと外部世界との間の通信を容易にすることを目的としており、一般的な運用サーバーとして使用することはお勧めしません。

組み込み Web サーバーの仕組みについては、こちらを参照してください。

以下は、PhantomJS スクリプトが Web サーバーを起動する方法の例です。

var server = require('webserver').create();
var service = server.listen('127.0.0.1:8080', function(request, response) {
    response.statusCode = 200;
    response.write('<html><body>Hello!</body></html>');
    response.close();
});

サービスが実行された後、PHP で簡単に解釈できる JSON オブジェクトを応答として送信できます。

任意のドメインをリッスンするにはserver.listen('8080', ....)

HTTP 応答ヘッダーを設定するresponse.setHeader("Access-Control-Allow-Origin","*");

于 2013-05-21T13:59:38.483 に答える