2014-08-27 80 views
0
$cmd = "php thisWillCrash.php"; 
exec($cmd, $op, $return_code); 

然後我檢查$ return_code和它的0表示成功,爲什麼?PHP執行分叉進程,使其崩潰返回碼仍然爲0

我已經試過「thisWillCrash.php」的幾個變化,包括

trigger_error("Fatal Error", E_USER_ERROR); 
include("dasdasdsakdassadsad"); 

,這將耗盡內存記憶迴路,同樣的結果返回代碼始終爲0。任何想法?

+0

$ return_code是從$ cmd返回的輸出數組。 FYI O通常與成功相反 – 2014-08-27 21:54:00

+0

@Dagon其實0代表成功返回代碼。在binutils中查找真假。 – programmerjake 2014-08-27 21:59:43

+0

良好的電話@programmerjake。 – 2014-08-27 22:00:40

回答

1

我認爲你需要拿到劇本本身明確退出比0

其他狀態,您可以嘗試像一些事情:

<?php 

try { 
    throw new Exception; 
} catch (Exception $exc) { 
    exit(1); 
} 
+0

調用'exit(1)'會不會更容易? – programmerjake 2014-08-27 22:02:07

+1

@programmerjake當然,我只是想說明當某些事情變得糟糕時,人們可能會「退出(1)」 – andrew 2014-08-27 22:03:23

0

似乎有沒有辦法執行非-zero從有效的PHP腳本退出狀態,除了明確呼叫exit。 php的main()返回非零僅上:

  • 無效的命令行(無效的參數,沒有這樣的文件等)
  • 內部啓動錯誤
  • 特定模式誤差(例如棉絨模式)
  • 解析錯誤
  • PHP腳本稱爲exit

因此獲得一個非零的最簡單的方法是一樣的東西php nosuchfile.php