Назад | Перейти на главную страницу

Статус выхода PHP 255: что это значит?

Недавно я составил PHP 5.2.9 двоичный файл, и я попытался выполнить с ним несколько сценариев PHP. Я могу выполнить некоторые сценарии без проблем, но один из них останавливает выполнение на полпути, завершаясь без ошибок или предупреждений. Возвращенный код состояния процесса - 255.

Я читал в инструкции, что такой статус «зарезервирован». Возникает вопрос: для чего?

Я считаю, что это как-то связано с отсутствием зависимостей в исполняемом файле PHP, но я не уверен.

Кто-нибудь знает, что означает код выхода 255?

P.S. В скриптах PHP нет ошибок, они нормально работают на других машинах.

255 является ошибкой, я мог бы воспроизвести тот же код выхода, получив фатальную ошибку.

Это означает, что каким-то образом ваше сообщение об ошибке скрыто, для этого есть несколько возможных причин:

  • error_reporting не определен, и php вообще не сообщает об ошибках
  • An @ (оператор подавления ошибок) скрывает вывод ошибки
  • STDERR перенаправлен в другое место (php -f somefile.php 2> / dev / null, удалите перенаправление)
  • Это может быть внутренняя ошибка из-за отсутствия зависимостей и того, что фатальная ошибка имеет тот же код выхода, что и сбой программы.

Это также может означать, что /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 ...

Это может быть вызвано сообщениями об ошибках, подавленных PHP (строка начинается с @). Я нашел строчку

grep -r "@" src/ 

а затем закомментировал @. После этого я получил настоящую ошибку и смог легко ее исправить. Я также впоследствии заметил, что PHPStorm уже обнаружил ту же ошибку, но я ее не исправил / не заметил.

Это также может означать, что

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

  • /etc/php.ini (в RHEL / CentOS / и т. д.)

установил

display_errors = Off 

это означает, что любые ошибки или предупреждения из сценариев командной строки никуда не денутся, если только

log_errors = On 

См. Также параметр error_log.

Попробуйте запустить свои скрипты с оберткой

В моем случае это была смерть xDebug из-за низкого xdebug.max_nesting_level стоимость.

Найдите, какой php.ini использовал ваш php-cli.

brain@cordova:~% php -i | grep "php.ini"

8:Configuration File (php.ini) Path => /etc/php/7.3/cli
9:Loaded Configuration File => /etc/php/7.3/cli/php.ini

Убедитесь, что параметры display_errors активны.

brain@cordova:~% php -i | grep "error"

106:display_errors => On => On
114:error_log => /tmp/php_errors.log => /tmp/php_errors.log
116:error_reporting => 22527 => 22527
134:log_errors => On => On

Убедитесь, что display_errors и log_errors включены.

Определите расположение error_log для записи ошибок в файл.

Сообщения об ошибках должны отображаться сейчас.