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()はされない。

参考:PHP system() と exec() の違い - JE no hitori chat

にほんブログ村 IT技術ブログへ
1票ポチッと押して下さい♪このブログのランキングが少し上がります。