Frage PHP exit status 255: was bedeutet das?


Ich habe vor kurzem ein PHP 5.2.9 binär, und ich habe versucht, einige PHP-Skripte damit auszuführen. Ich kann einige Skripte ohne Probleme ausführen, aber einer von ihnen hält seine Ausführung auf halbem Wege an und beendet ohne Fehler oder Warnungen. Der zurückgegebene Statuscode des Prozesses ist 255.

Ich habe im Handbuch gelesen, dass dieser Status "reserviert" ist. Die Frage ist: wofür?

Ich glaube, es hat etwas mit fehlenden Abhängigkeiten in der PHP-Programmdatei zu tun, aber ich kann mir nicht sicher sein.

Weiß jemand, was ein Exit-Code von 255 bedeutet?

P.S. Es gibt keine Fehler in den PHP-Skripten, sie laufen auf anderen Rechnern in Ordnung.


29
2018-06-22 15:17


Ursprung




Antworten:


255 ist ein Fehler, ich könnte denselben Exit-Code mit einem schwerwiegenden Fehler reproduzieren.

Dies bedeutet, dass Ihr Fehlerbericht irgendwie ausgeblendet ist, es gibt einige mögliche Ursachen dafür:

  • error_reporting ist nicht definiert und php meldet überhaupt keinen Fehler
  • Ein @ (Fehlerunterdrückungsoperator) blendet die Ausgabe des Fehlers aus
  • STDERR wird woanders umgeleitet (php -f somefile.php 2> / dev / null, entferne die Umleitung)
  • Dies könnte immer noch ein interner Fehler aufgrund fehlender Abhängigkeiten sein und ein schwerwiegender Fehler hat den gleichen Beendigungscode wie ein Programmabsturz.

31
2018-06-22 16:05



In seltenen Fällen unter Windows ist dies mit einem Defekt verbunden php.ini Datei (d. h. die Datei hat Zeichen innerhalb unterbrochen). Hat mich 2 Stunden gekostet, um das herauszufinden. Tipp: Wenn Ihr Skript composer.phar) arbeitet mit php -n composer.phar, dann dein php.ini Datei ist wahrscheinlich defekt. - tftd


Es könnte das auch bedeuten /etc/php5/cli/php.ini (auf Debian / Ubuntu) oder /etc/php.ini (auf RHEL / CentOS / etc.) hat display_errors = Off Das bedeutet, dass alle Fehler oder Warnungen von Befehlszeilenskripten zu nichts führen, es sei denn log_errors = On (Siehe auch die error_log Rahmen).

Versuchen Sie, Ihre Skripts mit einem Wrapper-Skript auszuführen, das verwendet php -d display_errors=on ...


7
2018-03-12 07:08



Ich möchte nur Danke sagen für die -d display_errors=on Tipp: Ich habe versucht, ein benutzerdefiniertes Skript für die PHP-Anwendung von jemand zu debuggen, das versucht, die gesamte Ausnahmeprotokollierung selbst zu verarbeiten, aber häufig Ausnahmen isst. Mit diesem Flag kann ich die Ausnahme zum Drucken an die CLI erhalten! - geerlingguy
In meinem Fall zeigte dies mir, dass das PHP-Skript die maximale Ausführungszeit überschritten hat. Danke für den tollen Tipp! - Max Vernon


Dies kann durch PHP unterdrückte Fehlermeldungen verursacht werden (die Zeile beginnt mit @). Ich habe die Linie gefunden

grep -r "@" src/ 

und dann das @ auskommentiert. Danach habe ich den eigentlichen Fehler bekommen und konnte es leicht beheben. Ich habe auch später bemerkt, dass PHPStorm den gleichen Fehler bereits herausgefunden hat, aber ich habe es nicht behoben / bemerkt.


0
2018-02-11 17:03





Es könnte das auch bedeuten

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

  • /etc/php.ini (auf RHEL / CentOS / etc.)

wurde festgelegt

display_errors = Off 

Das bedeutet, dass alle Fehler oder Warnungen von Befehlszeilenskripten zu nichts führen, es sei denn

log_errors = On 

Siehe auch die Einstellung error_log.

Versuchen Sie, Ihre Skripts mit einem Wrapper auszuführen


0
2018-03-06 15:15





In meinem Fall war das xDebug wegen niedriger Tod xdebug.max_nesting_level Wert.


0
2018-01-16 12:34