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


33

我最近编译了PHP 5.2.9二进制文件,并尝试使用它执行一些PHP脚本。我可以执行一些脚本而不会出现问题,但是其中一个脚本会中途停止执行,并且没有错误或警告地退出。进程的返回状态码为255。

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

我相信这与PHP可执行文件中缺少依赖项有关,但是我不确定。

有人知道退出代码255是什么意思吗?

PS PS脚本中没有错误,它们在其他计算机上可以正常运行。

Answers:


34

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

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

  • 没有定义error_reporting并且php报告完全没有错误
  • 一个@(误差抑制操作者)隐藏了错误的输出
  • STDERR重定向到其他地方(php -f somefile.php 2> / dev / null,删除重定向)
  • 由于缺少依赖项,这仍然可能是内部错误,而致命错误与程序崩溃具有相同的退出代码。

1
在Windows上,在极少数情况下,这与php.ini文件损坏有关(即,文件中的字符损坏)。花了我2个小时来解决这个问题。提示:如果您的脚本(即composer.phar)可用于php -n composer.phar,则php.ini文件可能已损坏。
tftd 2015年

9

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

尝试使用包含以下内容的包装器脚本运行脚本 php -d display_errors=on ...


3
我只想对我的-d display_errors=on技巧表示感谢-我正在尝试调试某人的PHP应用程序的自定义脚本,该脚本尝试自行处理所有异常日志记录,但经常会吃掉异常。使用该标志,我可以获取异常以打印到CLI!
geerlingguy

就我而言,这表明php脚本超出了其最大执行时间。多谢小费!
Max Vernon

0

这可能是由于PHP禁止显示错误消息(该行以@开头)引起的。我找到了

grep -r "@" src/ 

然后注释掉@。在此之后,我得到了实际的错误,并能够轻松修复它。之后我还注意到PHPStorm已经发现了相同的错误,但是我没有修复/注意到它。


0

这也可能意味着

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

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

已设置

display_errors = Off 

这意味着来自命令行脚本的任何错误或警告将一事无成,除非

log_errors = On 

另请参见error_log设置。

尝试使用包装器运行脚本


0

在我的情况下,这是xDebug由于xdebug.max_nesting_level值较低而死亡。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.