2014-08-27 33 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