log errores error enable activar error-handling php

error-handling - errores - php error log ubuntu



¿Dónde almacena PHP el registro de errores?(php5, apache, fastcgi, cpanel) (17)

Estoy en el alojamiento compartido y tengo Cpanel, Apache, PHP es ejecutado por fastcgi. ¿Dónde almacena PHP el registro de errores?

¿Hay alguna otra manera de encontrar el registro de errores en el entorno de alojamiento compartido en lugar de tener que pasar por toda la estructura del sitio para buscar los archivos error_log?

Tengo acceso al php.ini (estoy usando la versión 5.2.16 de PHP).



Linux

php --info | grep error

El terminal dará salida a la ubicación del registro de errores.

Windows

php --info | findstr /r /c:"error_log"

El símbolo del sistema mostrará la ubicación del registro de errores

Para establecer la ubicación del registro

Abre tu php.ini y agrega la siguiente línea:

error_log = /log/myCustomLog.log

Gracias a chelmertz , Boom por estos (comentarios sobre la pregunta).


Al configurar su archivo de registro de errores en php.ini, puede usar una ruta absoluta o una ruta relativa. La ruta relativa se resolverá en función de la ubicación del script de generación, y obtendrá un archivo de registro en cada directorio en el que tenga los scripts. Si desea que todos sus mensajes de error vayan al mismo archivo, use una ruta absoluta para el archivo.

Ver más aquí: http://www.php.net/manual/en/ref.errorfunc.php#53025


Busque el archivo httpd.conf para ErrorLog ejecutando cat <file location> | grep ErrorLog cat <file location> | grep ErrorLog en la línea de comando. Por ejemplo:

$ cat /etc/apache2/httpd.conf | grep ErrorLog

Salida:

# ErrorLog: The location of the error log file. # If you do not specify an ErrorLog directive within a <VirtualHost> ErrorLog "/private/var/log/apache2/error_log"

Encuentra la línea que comienza con ErrorLog y ahí está tu respuesta.

Nota: para los hosts virtuales, puede editar el archivo de hosts virtuales httpd-vhosts.conf para especificar una ubicación de archivo de registro diferente.


Debe usar la ruta absoluta al configurar la variable error_log en su archivo php.ini; de lo contrario, los registros de errores se almacenarán de acuerdo con su ruta relativa.

error_log = /var/log/php.errors

Otra solución sería escribir un script simple que listaría todos los archivos de registro de errores del árbol de directorios.


En un entorno LAMP, los errores de php se dirigen por defecto a este archivo a continuación.

/var/log/httpd/error_log

Todos los registros de acceso están bajo:

/var/log/httpd/access_log


La mejor manera es buscar en su archivo httpd.conf y ver cuál es el valor predeterminado. También puede ser anulado por su host virtual específico. /etc/httpd/conf/httpd.conf mirando /etc/httpd/conf/httpd.conf o /etc/apache2/httpd.conf y busco error_log. Puede aparecer como / var / log / httpd / error_log o /var/log/apache2/error_log pero también puede aparecer como simplemente logs/error_log .

En este caso, es una ruta relativa, lo que significa que estará en /etc/httpd/logs/error_log . Si aún no puede encontrarlo, consulte la parte inferior de su archivo httpd.conf y vea dónde se incluyen sus hosts virtuales. Puede estar en /etc/httpd/conf.d/<- como "otro" o "extra". Su host virtual podría anularlo luego con ErrorLog "/ path / to / error_log".


NGINX generalmente lo almacena en /var/log/nginx/error.log o access.log. (En Ubuntu en cualquier caso)


Parece que, por defecto, php no registra errores en ninguna parte, la clave error_log en php.ini está comentada en todas las instalaciones que he visto.

Generalmente yo:

  1. buscar archivos php.ini. locate php.ini .
  2. Busque en estos archivos el valor error_reporting ;

    Lo que debería ajustarse a cualquier amalgama de niveles de registro de php es suficiente para usted. ,

    Ej: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. Verifique el valor error_log para asegurarse de que apunte a un lugar real y no esté comentado.

    El valor predeterminado no proporciona una ruta completa, solo un nombre de archivo, no sé dónde se resuelve esta ruta normalmente. Probablemente /var/log/ .


Php almacena registros de errores en /var/log/apache2 si php es un módulo apache2. Los hosts compartidos a menudo almacenan archivos de registro en su subcarpeta de directorio raíz /log . Pero ... si tiene acceso a un archivo php.ini , puede hacer esto:

error_log = /var/log/php-scripts.log

De acuerdo con el comentario de rinogo : Si está utilizando cPanel, el archivo de registro maestro que probablemente esté buscando se almacena (por defecto) en

/usr/local/apache/logs/error_log

Si todo lo demás falla, puede verificar la ubicación del archivo de registro usando

<?php phpinfo(); ?>


Pruebe phpinfo() y phpinfo() "error_log"


Si ha creado Apache y PHP desde la fuente, entonces los registros de error se generan de forma predeterminada en su ${Apache install dir}/logs/error_log es decir, generalmente /usr/local/apache2/logs/error_log . De lo contrario, si lo instaló desde el repositorio, lo encontrará en /var/log/apache2/error_log . También puede establecer la ruta en su php.ini y verificarla invocando a phpinfo() .


Si utiliza php5-fpm, el valor predeterminado del registro debe estar bajo

/var/log/php5-fpm.log


También puede ser /var/log/apache2/error.log si está en el motor de cómputo de Google.

Y puedes ver la cola así:

tail -f /var/log/apache2/error.log


donde lo desee, si lo configura como su llamada de función: error_log ($ errorMessageforLog. "/ n", 4, ''somePath / SomeFileName.som'');


¿Cómo encontrar su registro de errores de PHP en Linux:

eric@dev /var $ sudo updatedb [sudo] password for eric: eric@dev /var $ sudo locate error_log /var/log/httpd/error_log

Otra forma equivalente:

eric@dev /home/eric $ sudo find / -name "error_log" 2>/dev/null /var/log/httpd/error_log


php --info | grep error

Esto es útil. Comentado por sjas en la pregunta. Así que lo incluí como respuesta.