[PHP] execとsystem関数
ちょっと違う2つの関数出力の違い
$ ls
test1.php test2.php test3.php exec_system.php
exec_system.php
<?php
echo "---- ここから system\n";
system('ls');
echo "\n---- ここから exec\n";
exec('ls', $output);
出力
$ php exec_system.php
---- ここから system
test1.php
test2.php
test3.php
exec_system.php
---- ここから exec
- system()は外部プログラムの返り値をそのまま出力する
- exec()は直接出力しない
exec()の引数
exec()の結果は引数があったときにそこに格納される
第一引数:外部プログラム、第二引数:実行結果、第三引数:外部プログラムのステータス
普通に実行が終了する例
exec.php
<?php
exec('ls', $arr, $status);
var_dump($arr);
var_dump($status);
$ php exec.php
array(4) {
[0]=>
string(8) "exec.php"
[1]=>
string(9) "test1.php"
[2]=>
string(9) "test2.php"
[3]=>
string(9) "test3.php"
}
int(0)
実行したコマンドが失敗する例
<?php
exec('mkdir /hoge', $arr, $status);
var_dump($arr);
var_dump($status);
$ php exec2.php
mkdir: /hoge: Permission denied
array(0) {
}
int(1)
第三引数に0以外のステータスが入ってくる
-
前の記事
CentOS系、Ubuntu系でCPUMinierをコンパイル 2017.11.14
-
次の記事
Let’s Encryptでhttps化する 2017.11.16