Phantomjsを呼び出すためにPHPにこのコードがあるとしましょう
shell_exec("phantomjs a-phantomjs-file.js");
PHP から phantomjs ファイルにデータを渡す方法はありますか? おそらくある種のコマンドライン引数ですか?
ここに phantomjs のコマンドライン引数のリストがあります: https://github.com/ariya/phantomjs/wiki/API-Reference
文字列の連結または補間を使用して PHP からそれらを渡すことができますが、引数がユーザー入力から来る可能性がある場合は、インジェクション攻撃に注意して保護するように注意してください。
次のようなPHPを使用して、PhantomJSとの間でデータを送受信します。
$command = '/path/to/phantomjs /path/to/my/script.js ' . escapeshellarg($uri);
$result_object = json_decode(shell_exec($command));
警告: 他のユーザーがサーバー上でコードを実行できないように、必ずユーザー入力の汚染を取り除いてください。
JavaScript 内では、この URI 変数は配列の 2 番目の要素として使用できますsystem.args
(最初の要素は呼び出しているスクリプトの名前です)。
var system = require('system');
var uri = system.args[1];
JavaScript が完了したら、PhantomJS を終了する前に JSON 変数を出力できます。
console.log(JSON.stringify({
"status": "success"
}));
phantom.exit();
この例の PHP コードの最初の行ではjson_decode()
、プレーン テキストの JSON 戻り値をオブジェクトにデコードするために既に使用しているため、PHP 内から次をstatus
使用して変数にアクセスできます。
print $result_object->status;