PHP でシステム コマンドを実行し、その出力が複数の行にまたがるコマンドの出力を取得しようとしています。私は exec() を使用していますが、単一行で出力を生成するコマンドの値のみを返すようです。
たとえば、コマンド ラインで date を実行すると、次のようになります。
Wed May 15 15:07:32 EST 2013
予想通り、これを使用してPHPからこのコマンドをexecとして実行すると...
exec("date", $exec_results);
...すると、$exec_results の値は...
Array ( [0] => Wed May 15 15:07:32 EST 2013 )
ただし、コマンドラインから時間を実行すると、これが得られます...
real 0m0.000s
user 0m0.000s
sys 0m0.000s
...しかし、これでPHPから行うと...
exec("time", $exec_results);
... $exec_results の値が空です:
Array( )
アプリケーションで実際に日付や時刻を実行する必要はありませんが、これらは、コマンド ラインでの単一行と複数行の出力によって、PHP に返されるものがどのように変化するかを示す例にすぎません。
ドキュメントには次のように記載されています。
出力引数が存在する場合、指定された配列はコマンドからの出力のすべての行で埋められます。
では、コマンド ラインで time コマンドを実行したときに表示されるすべての行で $exec_results 配列が満たされないのはなぜでしょうか?
注 - 権限を除外するために、apache ユーザーとしてコマンド ライン エントリを実行しました。