duanlu9557
2016-11-28 13:34
浏览 133
已采纳

PHP passthru执行状态

I'm trying to use the PHP passthru function to execute an OS command on Linux.

I am using it as follows. The Linux command is just to list files in a directory I know does not exist and then I am just echoing the status to make sure it's not 0.

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

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

echo $status;

However the status seems to be the entire output of the command including the status number

ls: /tp: No such file or directory
2

Why is this?

图片转代码服务由CSDN问答提供 功能建议

我正在尝试使用PHP passthru函数在Linux上执行OS命令。

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

  $ osexec =“ls  / tp“; 
 $ status = 0; 
 
 $ result = passthru($ osexec,$ status); 
 
echo $ status; 
   
 
 

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

  ls:/ tp:没有这样的文件或目录
2 
  <  / pre> 
 
 

为什么会这样?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • drzbc6003 2016-11-28 13:53
    最佳回答

    You are seeing stderr plus the $status value. To hide stderr you could do the following:

    // 2> /dev/null to hide stderr
    $osexec = "ls /tp 2> /dev/null";
    $status = 0;
    
    $result = passthru($osexec, $status);
    
    echo $status;
    
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题