PHPのexec()をsystem()に変えたら最後の出力が2回出力された
下記のシェルスクリプトを
[test.sh] echo 'aaa' echo 'bbb'
下記のように呼び出すと、下記の通りの出力が得られます。
[test1.php] echo exec('test.sh'); [出力結果] bbb
で「bbb」だけでなく、「aaa」も出力したいと思いexec()をsystem()に変えました。すると以下の通りの結果となりました。
[test2.php] echo system('test.sh'); [出力結果] aaa bbb bbb
なぜbbbが2回出力される・・
答え:system()の場合はechoはいらない
[test3.php] system('test.sh'); [出力結果] aaa bbb
つまりexec()もsystem()も実行結果の最後の行が出力される。そしてsystem()は実行プログラムの出力が出力され、exec()はされない。