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で実行されているときに失敗する理由、またはこれに対する回避策を知っている人はいますか?