我尝试使用PHP passthru函数在Linux上执行操作系统命令。
我使用它如下。 Linux命令只是列出我知道不存在的目录中的文件,然后我只是回显状态以确保它不是0。
$osexec = "ls /tp";
$status = 0;
$result = passthru($osexec, $status);
echo $status;
但状态似乎是命令的整个输出,包括状态编号
ls: /tp: No such file or directory
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)只有一些混合输出。