首先辨析:system,passthru

1.对于system和passthru函数.

  • 共同点:
    1.都用来执行外部命令
    2.都会先把命令的执行结果直接输出到标准输出(例如,在网页上显示或者在命令行终端显示)。
  • 不同点:
    1.system具有默认返回值,即会返回命令执行结果的最后一行的最后一个字符,
    2.对于执行命令的状态值,system函数返回的是0表示命令执行成功,其他值表示命令执行失败,
    3.并且system是必须要写作:
php
1
2
system("ls -l",$return_var);
echo "命令执行状态值为: ".$return_var;

即必须要在后面加上一个变量作为命令执行状态值的接收变量,然后通过echo输出命令执行状态值.
4.而passthru函数则没有这个要在后面多写一个变量接收命令执行状态值的步骤的规定,它的返回值直接就是0表示命令执行成功,其他值表示命令执行失败.
小结:
它们最大的区别就是默认的返回值,system函数返回的是命令执行结果的最后一行的最后一个字符
而passthru函数则是直接返回命令执行状态.

shell_exec函数

执行外部命令,并将命令的输出作为字符串返回,不会自动输出到标准输出,需要手动使用 echo 或其他输出函数进行输出。
如果命令执行失败或没有输出,将返回 null。
比如:

php
1
2
3
4
5
6
7
8
9
<?php
// 执行 ls 命令,并存储命令输出
$output = shell_exec("ls -l");
echo "Output from shell_exec function:\n";
if ($output!== null) {
echo $output;
} else {
echo "Command failed or no output.\n";
}