別のサーバーへのリモート呼び出しを必要とするスクリプトを開発しています。次を実行してスクリプトを呼び出します。
(host server) shell_exec("php /dir/script/script.php > /dev/null 2>/dev/null &");
次に実行するもの
(host server) ssh2_exec($con, "php /remote/server/dir/script.php");
私のスクリプト「script.php」は、標準出力バッファを使用してその値を返し(シェルコマンドを実行するときに)、標準出力をキャッチし、それを読み込んでから、データに対して何らかの作業を実行します。
私の問題は、script.php をリモート サーバーでローカルに実行すると、標準出力をキャッチできるため機能することですが、スクリプトをリモートで実行すると、出力が記録されないために失敗します。
リモート サーバー上のリモート スクリプトからの出力をキャプチャして、script.php を実行できるようにするにはどうすればよいですか。
助けてくれてありがとう!
編集:
ssh2_exec を実行する私のコードは次のとおりです。
$stream = ssh2_exec($con, "php /remote/server/dir/script.php" );
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);