ver navegador mostrar mensajes log errores error comandos codigos capturar activar php php-ini

navegador - ¿Por qué los errores de PHP se imprimen dos veces?



php error log (1)

Lo tengo reproducido. El primer mensaje de error es el resultado de la configuración de log_errors y va a STDERR .

El segundo es el resultado de display_errors y va a STDOUT .

Ambas configuraciones se pueden modificar durante el tiempo de ejecución. Así que para "preguntar PHP muy bien", esto es suficiente:

ini_set(''log_errors'', 1); ini_set(''display_errors'', 0);

Resumen

Sorprendentemente no pude encontrar nada sobre esto en Google o SO. Cuando lanzo una excepción en PHP aparece dos veces en mi consola, completa con un mensaje de error y un seguimiento de la pila. La primera vez que se imprime dice "Error grave de PHP: ..." y la segunda vez solo dice "Error grave: ...". No he probado esta es la versión del plugin de Apache.

Ejemplo

Con algunos espacios de nombres y caminos acortados con ''...'' para seguridad:

$ php code/com/.../tabular_data.php PHP Fatal error: Uncaught exception ''Exception'' with message ''File type not supported'' in /home/codemonkey/.../tabular_data.php:56 Stack trace: #0 /home/codemonkey/.../tabular_data.php(88): com/.../Tabular_Data->loadFromFile(''/home/codemonke...'', false) #1 /home/codemonkey/.../tabular_data.php(95): com/.../Tabular_Data::fromFile(''/home/codemonke...'') #2 {main} thrown in /home/codemonkey/.../tabular_data.php on line 56 Fatal error: Uncaught exception ''Exception'' with message ''File type not supported'' in /home/codemonkey/.../tabular_data.php:56 Stack trace: #0 /home/codemonkey/.../tabular_data.php(88): com/.../Tabular_Data->loadFromFile(''/home/codemonke...'', false) #1 /home/codemonkey/.../tabular_data.php(95): com/.../Tabular_Data::fromFile(''/home/codemonke...'') #2 {main} thrown in /home/codemonkey/.../tabular_data.php on line 56

Pregunta

Supongo que tiene algo que ver con stderr y stdout imprimiendo el error. En cualquier caso, ¿cómo le pido a PHP que lo imprima solo una vez, preferiblemente a stderr?

Salida de versión

PHP 5.3.9 (cli) (construido: 11 de enero de 2012 17:09:48)
Copyright (c) 1997-2012 El grupo PHP
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

El código

http://pastebin.com/iBUGJ2eY
Este es el código exacto que muestra dobles excepciones para mí, con espacios de nombres y rutas editadas a foos. Tenga en cuenta que siempre obtengo dobles excepciones en la línea de comandos en esta instalación. Estoy casi seguro de que el problema radica en la configuración de PHP.