Habilitar el registro de errores de PHP

 

Generalidades

Este artículo explica cómo habilitar y controlar los errores de PHP en tu sitio web. Esto puede ser necesario para solucionar problemas en un sitio web, ya que DreamHost deshabilita todas las advertencias de PHP de manera predeterminada, por lo que nunca deberías verlas en tu sitio web cuando realices cambios en PHP.

Habilitar las advertencias de PHP

Para mostrar las advertencias en tu sitio, solo debes agregar la siguiente línea a tu archivo phprc:

display_errors = on

Si se producen errores de PHP, ahora se mostrarán en tu sitio.

Sitios en Vivo

Esto NO se recomienda en un sitio web en vivo, ya que los visitantes verán los errores. La mejor opción es especificar qué tipos de errores deseas registrar y habilitar el registro de errores de PHP como se describe a continuación.

Usar un script

Agregar las siguientes líneas en un script no funcionará, ya que la única forma de habilitar el informe de errores es dentro de tu archivo phprc.

ini_set('display_errors',1);
error_reporting(E_ALL);

Controlar qué tipo de errores se muestran

PHP te permite especificar qué tipo de errores te gustaría que se muestren, o guardarlos en tu archivo de registro de errores de PHP. Puedes encontrar una lista completa de opciones aquí. Por ejemplo:

Directiva PHP  Explicación
error_reporting = E_ALL  Registra todos los errores y advertencias.
error_reporting = E_ERROR Errores fatales que ocurren durante el inicio de PHP.
error_reporting = E_WARNING Advertencias en tiempo de ejecución (errores no fatales). La ejecución del script no se detiene.
error_reporting = E_NOTICE Registra avisos de tiempo de ejecución (generalmente errores en el código de tu sitio web).

Además, puede excluir ciertos tipos de errores usando el operador bit a bit ~. Por ejemplo, esto mostrará todos los errores excepto advertencias NOTICE y DEPRECATED.

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

Configurar el registro de errores personalizado

Los siguientes pasos agregan código a tu archivo phprc para registrar todos los errores de PHP en un nuevo archivo llamado php.log.

 

Decidir donde debería ir el archivo php.log

Primero debes decidir dónde deseas que se cree tu archivo php.log. Esto puede estar en cualquier directorio que desees siempre que tu usuario pueda escribir en ese directorio. La ubicación más simple sería en el directorio principal de tu usuario. Por ejemplo:

/home/username/php.log

No es posible crear tu archivo php.log en tu directorio /home/username/logs. Este directorio es creado por DreamHost y es propiedad de dhapache, por lo tanto, tu usuario no puede escribir en este directorio.

Editar el archivo phprc

Agrega estas líneas a tu archivo phprc, reemplazando username con tu usuario shell.

log_errors = 1 
error_log = /home/username/php.log

Elimina todos los procesos de php

Asegúrate de terminar todos los procesos activos de php para asegurarte de que tu nueva configuración tome efecto.

Confirmar tus cambios

Una vez que hayas editado el archivo y hayas terminado todos los procesos de PHP, debes verificar para confirmar que los valores se hayan actualizado. Puedes hacer esto creando un archivo phpinfo.php.

Si no ves que tus cambios se han actualizado, intenta eliminar los procesos de PHP nuevamente:

Probar el archivo php.log

El nuevo archivo php.log no existirá en un principio. Se crea automáticamente después de que se produce un error de PHP. Este archivo continuará registrando los errores de PHP futuros.

Para probar el archivo php.log, crea un archivo PHP que genere un error. Por ejemplo, crea un archivo llamado error.php con el siguiente contenido y cárgalo en tu sitio.

<?php 
$file=fopen("welcome.txt","r");
?> 

Visita la página example.com/error.php desde un navegador. Sale un error. Si luego revisas el directorio principal de tu usuario, verás que se ha creado el archivo php.log y que registraste este error de PHP. Corre lo siguiente para comprobarlo:

[server]$ cat ~/php.log

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?