it-swarm.com.de

PHP Exit Status 255: Was bedeutet das?

Ich habe kürzlich eine PHP 5.2.9 Binärdatei kompiliert und versucht, einige PHP Skripte) damit auszuführen. Ich kann einige Skripte ohne Probleme ausführen, aber eines davon hält an Die Ausführung erfolgt auf halbem Weg ohne Fehler oder Warnungen. Der zurückgegebene Statuscode des Prozesses lautet 255.

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

Ich glaube, es hat etwas mit fehlenden Abhängigkeiten in der ausführbaren Datei PHP) zu tun, aber ich kann nicht sicher sein.

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

P.S. Es gibt keine Fehler in den Skripten PHP, sie werden auf anderen Computern in Ordnung ausgeführt.

34
Silvio Donnini

255 ist ein Fehler. Ich könnte denselben Exit-Code reproduzieren, indem ich einen schwerwiegenden Fehler habe.

Dies bedeutet, dass Ihre Fehlerberichterstattung irgendwie verborgen ist. Hierfür gibt es einige mögliche Ursachen:

  • error_reporting ist nicht definiert und PHP meldet überhaupt keinen Fehler
  • Ein @ (Fehlerunterdrückungsoperator) verbirgt die Ausgabe des Fehlers
  • STDERR wird an eine andere Stelle umgeleitet (php -f somefile.php 2>/dev/null, entferne die Umleitung)
  • Dies kann immer noch ein interner Fehler sein, da Abhängigkeiten fehlen und ein schwerwiegender Fehler denselben Exit-Code hat wie ein Programmabsturz.
37
Weboide

Es könnte auch bedeuten, dass /etc/php5/cli/php.ini (Unter Debian/Ubuntu) oder /etc/php.ini (Unter RHEL/CentOS/etc.) display_errors = Off Hat, was bedeutet, dass alle Fehler oder Warnungen von Befehl- Zeilenskripte führen nirgendwo hin, es sei denn, log_errors = On (siehe auch die Einstellung error_log).

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

10
Alastair Irvine

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

0
zored

Das könnte auch bedeuten

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

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

wurde festgelegt

display_errors = Off 

dies bedeutet, dass Fehler oder Warnungen von Befehlszeilenskripten nirgendwo hingehen, es sei denn

log_errors = On 

Siehe auch die Einstellung error_log.

Versuchen Sie, Ihre Skripte mit einem Wrapper auszuführen

0
Alauddin

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

grep -r "@" src/ 

und dann das @ auskommentiert. Danach bekam ich den eigentlichen Fehler und konnte ihn leicht beheben. Ich bemerkte auch später, dass PHPStorm den gleichen Fehler bereits herausgefunden hatte, aber ich hatte ihn nicht behoben/bemerkt.

0
Antti Hätinen

Suchen Sie, welche php.ini Ihre php-cli verwendet hat.

[email protected]:~% 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

Stellen Sie sicher, dass die Parameter display_errors aktiv sind.

[email protected]:~% 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

Stellen Sie sicher, dass display_errors und log_errors eingeschaltet sind.

Definieren Sie den Speicherort error_log, um Fehler in einer Datei zu protokollieren.

Fehlermeldungen sollten jetzt angezeigt werden.

0
Brain90