ちゃんと違いがありました。
昔のエントリでPHPから外部スクリプトを実行するときに、「“(バッククオート:実行演算子)」を利用することができることを学びましたが、system()関数との違いがわかりませんでした。
で、今日気づいたので備忘録。
- system()関数は標準出力の結果が表示される
- 「“(バッククオート:実行演算子)」は標準出力の結果が表示されない
※変数格納し、PHPでの出力処理が別途必要となる
これが大きな違いですね。
なので、
<?php
$result = system('ls');
echo "\n-----------\n\n";
echo $result;
echo "\n-----------\n\n";
$result = `ls`;
echo "\n-----------\n\n";
echo $result;
?>
これを実行すると、
fuga.txt hoge.php hoge.txt moge.txt piyo.txt ----------- piyo.txt ----------- ----------- fuga.txt hoge.php hoge.txt moge.txt piyo.txt
こんな結果になるわけですね。
ファイル削除やコピー、圧縮のような出力のない処理で使うことが多かったので気づきませんでした。
ちなみに、system()関数の戻り値は標準出力の最終行しか取得できないようですね。
これでまた一歩前進できました。