php异常后的退出代码是什么?

时间:2018-08-03 13:55:39

标签: php

我正在使用运行命令行PHP脚本的程序。 PHP脚本一直在抛出异常,但是该程序一直在看到退出代码0(并且没有检查异常)。

  • PHP脚本是否实际上返回了不同的退出代码,并且程序只是以某种方式获得了错误的退出代码?
  • 还是他们真的返回带有异常的退出代码0?
  • 还是他们根本不返回退出代码?

1 个答案:

答案 0 :(得分:4)

在发生异常的情况下,返回状态代码为255。您可以使用简单的脚本在bash内对其进行简单测试。

exc.php

<?php throw new Exception();

然后运行

php exc.php
echo $? //prints 255

但是,请记住,这仅在未定义自己的异常处理程序时才有效。如果定义了自己的处理程序,则必须在异常处理程序内部手动返回返回代码。

exc2.php

<?php
set_exception_handler(function() {});
throw new Exception();

返回状态码0。如果您需要状态码,请使用exit

<?php
set_exception_handler(function() {
    exit(42);
});
throw new Exception("","","");

现在脚本返回状态代码42