2

PHP アプリケーションで PhantomJS 64 ビットを使用して、ユーザーに電子メールで送信する HTML ページを動的にキャプチャしています。

phantomjs rasterize.js "http://..." /path_to_images/image.png

このメソッドは、コマンド ラインで上記を実行すると正常に動作しますが、PHP スクリプトがexecそれを使用してコマンドを実行すると、出力がなく失敗し、終了コード 11 が返されます。

32 ビットの phantomJS バイナリを使用するように切り替えると、コマンドは成功しますが、エラーが発生するため、ページに Google JSAPI をロードできませんReference Error: can't find variable google。すべてのページ コンテンツが読み込まれ、画像としてキャプチャされるわけではないため、これは問題です。JSAPI は HTTPS を使用して組み込まれます。HTTPに切り替えると、参照エラーはなくなりましたが、レンダリングされた画像はすべて黒くなります。

PHPを実行しているのと同じユーザーとしてコマンドをテストしました。

要約すると:

command> phantomjs_64 rasterize.js "http://..." /path_to_images/image.png

わかった

exec('phantomjs_64 rasterize.js "http://..." /path_to_images/image.png');

出力なし、終了コード 11

command> phantomjs rasterize.js "http://..." /path_to_images/image.png
exec('phantomjs rasterize.js "http://..." /path_to_images/image.png');

不完全な出力

デフォルトのphantomJS rasterize.jsスクリプトがPHPで実行されているときに失敗する理由、またはこれに対する回避策を知っている人はいますか?

4

1 に答える 1