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);
?> 

                    
                
                
            
        
浙公网安备 33010602011771号