プログラムで Web ページのスクリーンショットを撮る目的で、phantomJSを使用しています。私の Web サーバーは Linux 64 ビットで動作します。
シナリオ
私のtest.php
ファイル
exec('./phantomjs --version', $o, $e);
print_r($o);
echo $e;
ブラウザで開きtest.php
ます。私が得る出力は次のとおりです。
1.9.1 // version number
0 // exit code
exec()
これは、コマンドを実行でき、phantomJS
完全に機能していることを証明しています。
問題
上記のコードを次のように置き換えると:
exec('./phantomjs http://mywebsite.com/test.js', $o, $e);
print_r($o);
echo $e;
出力は次のとおりです。
Array ( ) // empty output
139 // exit code which on investigating turned out to be segmentation fault
私も試しました:
exec('./phantomjs ./test.js', $o, $e); // since phantomjs and test.js are in same folder
しかし、結果は同じでした(segfault)
test.jsコード:
var page = require('webpage').create();
var url = 'http://www.rediff.com/';
page.open(url, function (status) {
phantom.exit();
});
これにより、完全なパスを の 2 番目の引数として使用するphantomJS
と、クラッシュが発生すると思われます。したがって、私が疑問に思っていることは次のとおりです。
- 私の仮定は正しいですか?
- それとも、絶対 URL を介し
exec()
たファイルへのアクセスをブロックしている Web サーバーの制限のためですか?.js