PHP passthru执行状态

时间:2016-11-28 13:34:29

标签: php linux

我尝试使用PHP passthru函数在Linux上执行操作系统命令。

我使用它如下。 Linux命令只是列出我知道不存在的目录中的文件,然后我只是回显状态以确保它不是0。

$osexec = "ls /tp";
$status = 0;

$result = passthru($osexec, $status);

echo $status;

但状态似乎是命令的整个输出,包括状态编号

ls: /tp: No such file or directory
2

为什么会这样?

2 个答案:

答案 0 :(得分:1)

您看到stderr加上$status值。要隐藏stderr,您可以执行以下操作:

// 2> /dev/null to hide stderr
$osexec = "ls /tp 2> /dev/null";
$status = 0;

$result = passthru($osexec, $status);

echo $status;

答案 1 :(得分:0)

passthru会自动输出命令的所有输出。

尝试echo "-------\n".$status;,你应该看到不同来源(passthru / echo)只有一些混合输出。