2016-11-28 75 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)的混合輸出。