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 einer von ihnen hält die Ausführung in der Mitte an und beendet das Programm 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 ausführbaren PHP-Datei zu tun, aber ich kann nicht sicher sein.
Weiß jemand, was ein Exit-Code von 255 bedeutet?
PS Es gibt keine Fehler in den PHP-Skripten, sie laufen auf anderen Rechnern in Ordnung.
php.ini
Datei zusammen (dh die Datei enthält beschädigte Zeichen). Ich habe 2 Stunden gebraucht, um das herauszufinden. Tipp: Wenn Ihr Skript (dhcomposer.phar
) funktioniertphp -n composer.phar
, ist Ihrephp.ini
Datei wahrscheinlich defekt.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
Fehler oder Warnungen von Befehlszeilenskripten nirgendwo hingehen, es sei dennlog_errors = On
(siehe auch dieerror_log
Einstellung).Versuchen Sie, Ihre Skripte mit einem Wrapper-Skript auszuführen, das verwendet wird
php -d display_errors=on ...
quelle
-d display_errors=on
Tipp bedanken. Ich habe versucht, ein benutzerdefiniertes Skript für die PHP-App eines anderen Benutzers zu debuggen, das versucht, die gesamte Ausnahmenprotokollierung selbst durchzuführen, aber häufig Ausnahmen verwendet. Wenn ich dieses Flag benutze, kann ich die Ausnahme erhalten, um an die CLI zu drucken!Dies kann durch unterdrückte PHP-Fehlermeldungen verursacht werden (die Zeile beginnt mit @). Ich habe die Leitung durch gefunden
und dann das @ auskommentiert. Danach bekam ich den eigentlichen Fehler und konnte ihn problemlos beheben. Ich bemerkte auch später, dass PHPStorm den gleichen Fehler bereits herausgefunden hatte, aber ich hatte ihn nicht behoben / bemerkt.
quelle
Es könnte auch bedeuten, dass
/etc/php5/cli/php.ini (unter Debian / Ubuntu)
/etc/php.ini (unter RHEL / CentOS / etc.)
wurde festgelegt
Dies bedeutet, dass alle Fehler oder Warnungen von Befehlszeilenskripten nirgendwo hingehen, es sei denn
Siehe auch die Einstellung error_log.
Versuchen Sie, Ihre Skripte mit einem Wrapper auszuführen
quelle
In meinem Fall war das der Tod von xDebug wegen des geringen
xdebug.max_nesting_level
Wertes.quelle