Estado de salida PHP 255: ¿qué significa?

33

Recientemente compilé un binario PHP 5.2.9 e intenté ejecutar algunos scripts PHP con él. Puedo ejecutar algunos scripts sin problemas, pero uno de ellos detiene su ejecución a mitad de camino, saliendo sin errores ni advertencias. El código de estado devuelto del proceso es 255.

He leído en el manual que dicho estado es 'reservado'. La pregunta es: ¿para qué?

Creo que tiene algo que ver con las dependencias que faltan en el ejecutable de PHP, pero no puedo estar seguro.

¿Alguien sabe qué significa un código de salida de 255?

PD No hay errores en los scripts PHP, se ejecutan bien en otras máquinas.

Silvio Donnini
fuente

Respuestas:

34

255 es un error, podría reproducir ese mismo código de salida al tener un error fatal.

Esto significa que de alguna manera su informe de errores está oculto, hay algunas causas posibles para esto:

  • error_reporting no está definido y php no informa ningún error
  • Un @(operador de supresión de error) oculta la salida del error
  • STDERR se redirige a otro lugar (php -f somefile.php 2> / dev / null, elimine la redirección)
  • Esto aún podría ser un error interno debido a la falta de dependencias y que un error fatal tiene el mismo código de salida que un bloqueo del programa.
Weboide
fuente
1
En algunos casos raros en Windows, esto está relacionado con un php.iniarchivo roto (es decir, el archivo tiene caracteres rotos en su interior). Me tomó 2 horas para resolver esto. Consejo: Si su script (es decir, composer.phar) funciona php -n composer.phar, entonces su php.iniarchivo probablemente esté roto.
tftd
9

También podría significar que /etc/php5/cli/php.ini(en Debian / Ubuntu) o /etc/php.ini(en RHEL / CentOS / etc.) tiene lo display_errors = Offque significa que cualquier error o advertencia de los scripts de línea de comandos no irá a ninguna parte, a menos que log_errors = On(vea también la error_logconfiguración).

Intente ejecutar sus scripts con un script de contenedor que use php -d display_errors=on ...

Alastair Irvine
fuente
3
Solo quiero decir gracias por el -d display_errors=onconsejo: estaba tratando de depurar un script personalizado para la aplicación PHP de alguien que intenta manejar todo el registro de excepciones por sí mismo, pero a menudo come excepciones. ¡Usando esa bandera puedo obtener la excepción para imprimir en la CLI!
geerlingguy
En mi caso, esto me mostró que el script php excedió su tiempo máximo de ejecución. Gracias por el gran consejo!
Max Vernon
0

Esto puede deberse a mensajes de error suprimidos de PHP (la línea comienza con @). Encontré la línea por

grep -r "@" src/ 

y luego comentó el @. Después de esto, obtuve el error real y pude solucionarlo fácilmente. También noté después que PHPStorm ya había descubierto el mismo error, pero no lo había solucionado / notado.

Antti Hätinen
fuente
0

También podría significar que

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

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

ha establecido

display_errors = Off 

lo que significa que cualquier error o advertencia de los scripts de línea de comandos no irá a ninguna parte, a menos

log_errors = On 

Consulte también la configuración de error_log.

Intenta ejecutar tus scripts con un contenedor

Alauddin
fuente
0

En mi caso, esa fue la muerte de xDebug debido a su bajo xdebug.max_nesting_levelvalor.

Zored
fuente