私が実行しようとしている簡単なスクリプトがあります。このスクリプトの目的は、別のネットワーク接続サーバ上でコマンドを実行することですssh 'hostname'コマンドと組み合わせてphpでexec()を使用するには?
<?php
print exec('whoami');
$output2 = exec('ssh someotherhost ls -l /path/to/dir',$output);
print_r($output);
print_r($output2);
print $output2;
?>
を。上記のssh
コマンドを実行すると(ダミーデータを実際のデータに置き換える)、コマンドラインから ssh someotherhost ls -l /path/to/dir
適切なls行が出力されます。しかし、同じコマンドで同じディレクトリから上記のスクリプトを実行すると、3つの下の印刷行のいずれにも出力されません。ただし、上部にwhoami
のexec()
が期待どおりに印刷されます。だから私の質問は、最初のコマンドはなぜ機能し、2番目のコマンドは機能しないのでしょうか?
ネットワーク化された2台のサーバは内部ネットワーク上にあり、sshネットワークキーのペアリングで設定されています。コマンドはphp内からではなく、動作します。
ありがとうございました。
これをどのユーザーで実行していますか?あなたがコマンドラインから 'sudo'を実行したときに動作しますか? –
診断のためだけに: "#!/ bin/sh \ n ssh someotherhost ls -l/path/to/dir"をシェルスクリプトに入れて、 "print exec( ' whoami '); "、chmod 700それです。それから、コマンドラインからPHPを使ってexec()を使って試してみましょう –