$cmd = "php thisWillCrash.php";
exec($cmd, $op, $return_code);
然后我检查 $return_code 及其 0 表示成功,这是为什么?
我已经尝试了"thisWillCrash.php"的几种变体,包括
trigger_error("Fatal Error", E_USER_ERROR);
include("dasdasdsakdassadsad");
以及将耗尽内存的内存循环,相同的结果返回代码始终为 0。有什么想法吗?
我认为您需要让脚本本身以0
以外的状态显式退出
您可以尝试以下方法:
<?php
try {
throw new Exception;
} catch (Exception $exc) {
exit(1);
}
除了显式调用exit
之外,似乎没有办法从有效的 php 脚本中强制执行非零退出状态.php的main()
仅在以下情况下返回非零:
- 无效的命令行(无效的参数,没有这样的文件等(
- 内部启动错误
- 特定模式错误(例如 lint 模式(
- 解析错误
- 名为
exit
的 PHP 脚本
因此,获得非零的最简单方法是php nosuchfile.php
。