logger log errores error enable crear activar php command-line-interface error-logging

errores - php logger



PHP CLI no registrará errores (6)

El comportamiento de registro / informe de PHP también depende de error_reporting.

Algunos marcos PHP (por ejemplo, CodeIgniter) ejecutan una error_reporting(E_STRICT) o equivalente, cuando se encuentra en modo de producción, lo que reducirá drásticamente el número / tipo de errores registrados.

Si desea depurar algo, puede simplemente poner la siguiente declaración justo antes de su código:

error_reporting(E_ALL);

PHP actualmente no registrará los errores producidos desde la línea de comando.

Yo tengo :

log_errors = On error_log = /var/log/php_errors.log

en /etc/php5/cli/php.ini

¿Me falta un ajuste adicional para que funcione?


Este hilo de preguntas y respuestas fue muy útil para mí al configurar el registro CLI de PHP en un entorno Ubuntu 12.04, así que quería publicar una respuesta que destile lo que aprendí. Además de la gran información proporcionada por David Chan y George Cummins , he creado una secuencia de comandos logrotate.d para garantizar que el registro de errores CLI de PHP no se descontrole, así como configurarlo para que varios usuarios puedan registrar errores en el registro común de errores CLI de PHP.

En primer lugar, el comportamiento predeterminado de la CLI de PHP es registrar los mensajes de error en la salida estándar; el inicio de sesión en un archivo no es un comportamiento predeterminado. Lo que generalmente significa iniciar sesión en la misma sesión de terminal de línea de comandos que ejecuta el comando PHP CLI. Si bien el archivo PHP ini tiene adaptaciones para un error_log específico, se deben realizar ajustes adicionales para que realmente funcione.

Primero, tuve que crear un archivo php_errors.log inicial:

sudo touch /var/log/php_errors.log

Como el servidor en cuestión es utilizado por desarrolladores web que trabajan en varios proyectos, he configurado un grupo común para ellos llamado www-users . Y en este caso, quiero que php_errors.log sea ​​legible y escribible por www-users . Cambio la propiedad del archivo de esta manera:

sudo chown root:www-users /var/log/php_errors.log

Y luego cambie los permisos del archivo a esto:

sudo chmod 664 /var/log/php_errors.log

Sí, desde el punto de vista de seguridad, tener un archivo de registro legible y escribible por cualquiera en www-users no es tan bueno. Pero este es un ambiente de trabajo compartido controlado. Así que confío en que los usuarios respeten cosas como esta. Y además, cuando PHP se ejecuta desde la CLI, cualquier usuario que pueda hacer eso necesitará acceso de escritura a los registros de todos modos para incluso obtener un registro escrito.

A continuación, vaya a /etc/php5/cli/php.ini para ajustar la configuración predeterminada de Ubuntu 12.04 para que coincida con este nuevo archivo de registro:

sudo nano /etc/php5/cli/php.ini

Afortunadamente log_errors está habilitado por defecto en Ubuntu 12.04:

log_errors = On

Pero para permitir el registro en un archivo, necesitamos cambiar el error_log para que coincida con el nuevo archivo de esta manera:

error_log = /var/log/php_errors.log

Configure un script logrotate.d .

Ahora debería ser, pero como no quiero que los registros se salgan de control, configuré un logrotate.d para php_errors.log . Crea un archivo llamado php-cli en /etc/logrotate.d/ como este:

sudo nano /etc/logrotate.d/php-cli

Y coloque el contenido de este script rotate daemon script allí:

/var/log/php_errors.log { weekly missingok rotate 13 compress delaycompress copytruncate notifempty create 664 root www-users sharedscripts }

Probando la configuración

Una vez hecho esto, probemos la configuración usando el consejo anterior de David Chan :

php -r "error_log(''This is an error test that we hope works.'');"

Si eso se ejecutó correctamente, simplemente debería devolverse a un símbolo del sistema vacío ya que los errores CLI de PHP ya no se envían a la salida estándar. Así que compruebe el php_errors.log real para el mensaje de error de prueba de esta manera:

tail -n 10 /var/log/php_errors.log

Y debe haber una línea de error con marcas de tiempo que se ve así:

[23-Jul-2014 16:04:56 UTC] This is an error test that we hope works.


Si no puede entender por qué o quizás no tiene permisos de usuario en php.ini, otra forma de eliminar errores de análisis de información es envolver su fuente de php en otra fuente de php con un cuerpo como:

ini_set(''display_errors'',1); error_reporting(E_ALL); include "mybustedfile.php";


Verifique que la cuenta de usuario que ejecuta PHP CLI tenga acceso de escritura a /var/log/php_errors.log .

Además, puede verificar que está utilizando el archivo php.ini correcto como este:

php -a -c /etc/php5/cli/php.ini


como diagnóstico puede intentar forzar una escritura en el registro de errores de esta manera.

php -c /etc/php5/cli/php.ini -r " error_log(''test 123''); "

ahora debería ver la prueba 123 en su registro

tail /var/log/php_errors.log


en archivo PHP

error_log("You messed up!", 3, "/var/tmp/my-errors.log");

en la terminal

tail -f /var/tmp/my-errors.log

salida Usted ensució!