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

 

  

posted @ 2023-01-30 16:16  声声慢43  阅读(48)  评论(0编辑  收藏  举报