PHP exit status 255: cosa significa?


33

Recentemente ho compilato un binario PHP 5.2.9 e ho provato ad eseguire alcuni script PHP con esso. Posso eseguire alcuni script senza problemi, ma uno di essi ne interrompe l'esecuzione a metà, uscendo senza errori o avvisi. Il codice di stato restituito del processo è 255.

Ho letto nel manuale che tale stato è "riservato". La domanda è: per cosa?

Credo che abbia qualcosa a che fare con le dipendenze mancanti nell'eseguibile PHP, ma non posso esserne sicuro.

Qualcuno sa cosa significa un codice di uscita di 255?

PS Non ci sono errori negli script PHP, funzionano bene su altre macchine.

Risposte:


34

255 è un errore, potrei riprodurre lo stesso codice di uscita avendo un errore fatale.

Ciò significa che in qualche modo la segnalazione degli errori è nascosta, ci sono alcune possibili cause per questo:

  • error_reporting non è definito e php non riporta alcun errore
  • Un @(operatore di soppressione dell'errore) nasconde l'output dell'errore
  • STDERR viene reindirizzato da qualche altra parte (php -f somefile.php 2> / dev / null, rimuove il reindirizzamento)
  • Questo potrebbe essere ancora un errore interno a causa di dipendenze mancanti e che un errore irreversibile ha lo stesso codice di uscita di un arresto anomalo del programma.

1
In alcuni rari casi su Windows, ciò è correlato a un php.inifile non funzionante (ovvero all'interno del file sono presenti caratteri non funzionanti). Mi ci sono voluti 2 ore per capirlo. Suggerimento: se il tuo script (cioè composer.phar) funziona php -n composer.phar, php.iniprobabilmente il tuo file è rotto.
tftd

9

Potrebbe anche significare che /etc/php5/cli/php.ini(su Debian / Ubuntu) o /etc/php.ini(su RHEL / CentOS / ecc.) Ha il display_errors = Offche significa che eventuali errori o avvertimenti dagli script della riga di comando non andranno da nessuna parte, a meno che log_errors = On(vedi anche l' error_logimpostazione).

Prova a eseguire i tuoi script con uno script wrapper che utilizza php -d display_errors=on ...


3
Voglio solo ringraziare per il -d display_errors=onsuggerimento: stavo cercando di eseguire il debug di uno script personalizzato per l'app PHP di qualcuno che tenta di gestire da solo la registrazione di tutte le eccezioni, ma spesso fa eccezioni. Usando quella bandiera posso ottenere l'eccezione per stampare sulla CLI!
Geerlingguy,

Nel mio caso, questo mi ha mostrato che lo script php ha superato il tempo massimo di esecuzione. Grazie per l'ottimo consiglio!
Max Vernon,

0

Ciò potrebbe essere causato da messaggi di errore soppressi PHP (la riga inizia con @). Ho trovato la linea di

grep -r "@" src/ 

e poi ha commentato la @. Dopo questo ho ottenuto l'errore reale ed è stato in grado di risolverlo facilmente. Ho anche notato in seguito che PHPStorm aveva già scoperto lo stesso errore, ma non l'avevo riparato / notato.


0

Potrebbe anche significare questo

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

  • /etc/php.ini (su RHEL / CentOS / ecc.)

ha impostato

display_errors = Off 

il che significa che eventuali errori o avvisi dagli script della riga di comando non andranno da nessuna parte, a meno che

log_errors = On 

Vedi anche l'impostazione error_log.

Prova a eseguire i tuoi script con un wrapper


0

Nel mio caso è stata la morte di xDebug a causa del basso xdebug.max_nesting_levelvalore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.