2016-11-28 65 views
0

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

我使用它如下。 Linux命令只是在我知道不存在,那么我只是呼应的状态,以确保它不为0

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

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

echo $status; 

但是状态似乎是命令的整个输出目录,列出文件包括状态号码

ls: /tp: No such file or directory 
2 

这是为什么?

回答

1

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

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

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

echo $status; 
+0

谢谢,我没有意识到它包括整个输出故意 – Trent

0

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

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