PHP退出状态255:这是什么意思?

我最近编译了一个PHP 5.2.9二进制文件,我试着用它来执行一些PHP脚本。 我可以毫无问题地执行一些脚本,但其中一个中途停止执行,退出时没有任何错误或警告。 进程返回的状态码是255。

我已阅读手册中的这种状态是“保留”的。 问题是:为了什么?

我相信这可能与PHP可执行文件中缺less依赖关系有关,但我无法确定。

任何人都知道退出代码255是什么意思?

PS在PHP脚本中没有错误,在其他机器上运行OK。

255是一个错误,我可以重现相同的退出代码有一个致命的错误。

这意味着你的错误报告是隐藏的,有一些可能的原因:

  • error_reporting没有定义和PHP报告没有任何错误
  • @ (错误抑制运算符)隐藏了错误的输出
  • STDERR被redirect到其他地方(php -f somefile.php 2> / dev / null,删除redirect)
  • 这可能仍然是一个内部错误,由于缺less依赖关系,并且致命错误与程序崩溃具有相同的退出代码。

这也可能意味着/etc/php5/cli/php.ini (在Debian / Ubuntu上)或/etc/php.ini (在RHEL / CentOS /等上)有display_errors = Off ,这意味着来自命令的任何错误或警告log_errors = On脚本将无处可去,除非log_errors = On (另请参阅error_log设置)。

尝试使用包含脚本的脚本运行脚本,该脚本使用php -d display_errors=on ...

这可能是由于PHP压缩的错误消息(该行以@开头)引起的。 我find了该行

 grep -r "@" src/ 

然后将@注释掉。 之后,我得到了实际的错误,并能够很容易地修复。 后来我也注意到PHPStorm已经发现了同样的错误,但我没有修正/注意到它。

这也意味着这一点

  • /etc/php5/cli/php.ini(在Debian / Ubuntu上)

  • /etc/php.ini(在RHEL / CentOS /等)

已经定了

 display_errors = Off 

这意味着从命令行脚本的任何错误或警告将无处可去,除非

 log_errors = On 

另请参阅error_log设置。

尝试用包装器来运行你的脚本