php exec() system()的差别
1.exec ---执行外部程序
string exec ( string $command [, array &$output [, int &$return_var ]] )
- $command 要执行的shell 命令
- $output shell命令的输出填充此数组,每行输出填充数组中的一个元素。 请注意,如果数组中已经包含了部分元素,exec() 函数会在数组末尾追加内容。如果你不想在数组末尾进行追加,请在传入 exec() 函数之前 对数组使用 unset() 函数进行重置。
- $return_var 命令执行后的返回状态,命令执行成功值是0
- 返回值 shell命令输出的最后一行
ps: 2>&1 exec不成功,调试方案一个技巧就是使用管道命令, 使用 2>&1, 命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。
<?php $out = [34]; $res = exec('ls 2>&1',$out,$return_status); var_dump($res); echo "------\n"; var_dump($out); echo "------\n"; var_dump($return_status); ?>
2.system ---执行外部程序,并且显示输出
string system ( string $command [, int &$return_var ] )
$command 要执行的命令
$return_var 命令执行后的返回状态,值是0表示成功
<?php $res = system('ls 2>&1',$return_status);
echo "------\n"; var_dump($res); echo "------\n"; var_dump($return_status); ?>