warning off ocultar log info errors error_reporting error display_errors php apache logging

off - Apache no registra errores de php



php hide errors (6)

Compruebe a qué script PHP está accediendo y cómo está configurado Apache para acceder a él.

En algunas configuraciones (p. Ej., Hosts virtuales, directorios específicos ...), el archivo error_log puede configurarse en una ruta / nombre diferente a la predeterminada.

Entonces sugeriría revisar sus archivos de configuración de Apache.

PHP a través de CLI registra con éxito los errores en /var/log/php_errors.log.

Pero apache + php no registra errores.

[bla@notebook ~]$ apachectl -v Server version: Apache/2.2.17 (Unix) Server built: May 19 2011 03:15:39 [bla@notebook ~]$ php -v PHP 5.3.6 with Suhosin-Patch (cli) (built: Mar 23 2011 13:28:00) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

En php.ini tengo:

display_errors = On error_reporting = E_ALL | E_STRICT log_errors = On error_log = php_errors.log

En httpd.conf :

ErrorLog "/var/log/httpd/error_log"

Permisos:

[bla@notebook /]$ ls -la /var/log/httpd/ -rwxrwxr-x 1 root root 133351 21.11.2011 11:18 access_log* -rwxrwxr-x 1 root http 1307 21.11.2011 11:18 error_log* [bla@notebook /]$ ls -la /var/log/php_errors.log -rwxrwxr-x 1 root http 521 14.11.2011 17:31 /var/log/php_errors.log*

Como puede ver, el demonio de Apache tiene permisos para escribir en los archivos de registro.

Aún no hay errores de Apache o PHP en /var/log/php_errors.log y / var / log / httpd / error_log.

ACTUALIZACIÓN 1.

Cambió esta línea en php.ini:

error_log = php_errors.log

al camino completo:

error_log = /var/log/php_errors.log

Los permisos estaban bien. Pero si alguien también está teniendo problemas con esto, puede depurar los permisos de configuración para el archivo de registro 0777 o cambiar el propietario del archivo.


En el pasado, no tenía registros de errores en dos casos:

  1. El usuario bajo el cual se estaba ejecutando Apache no tenía permisos para modificar el archivo php_error_log .
  2. Se produjo el error 500 debido a una mala configuración de .htaccess , por ejemplo, la configuración incorrecta del módulo de reescritura. En esta situación, los errores se registran en el archivo error_log Apache.

Esto también puede ser causado por la propia directiva LogLevel de Apache, que si se establece demasiado alta anulará el registro de PHP. Sin embargo, no anula la capacidad de PHP para generar errores en la página, es decir, display_error, y tampoco afecta a CLI PHP. Vale la pena ver si tiene ese conjunto particular de síntomas.


Por lo general, hay dos archivos php.ini separados para Apache y CLI. ¿Está seguro de que está buscando el correcto?

Editar:

2 opciones más que puedo pensar:

  • algunas directivas de Apache están jugando con la ruta del registro de PHP (o deshabilitando las opciones de registro, aunque es muy poco probable que sea así) - intente establecer una ruta absoluta al archivo de registro en php.ini (@Frosty Z ha sugerido algo como esto)
  • Noté que su instalación de PHP tiene aplicado el parche Suhosin, que hace varias modificaciones restrictivas para mejorar la seguridad. Y mientras que en teoría hay suficientes permisos para que un usuario del grupo de usuarios http escriba en el archivo de registro, es probable que exista un comportamiento similar a suphp y cuando se accede a su script a través de la web, se ejecuta con / como el nombre de usuario que se establece como es propietario (propietario del archivo del script que es) - intente cambiarlo.

Yo tuve el mismo problema.

Configurar log_errors_max_len = 0 en php.ini funcionó para mí.

Manual de PHP :

Establecer la longitud máxima de log_errors en bytes. En error_log se agrega información sobre la fuente. El valor predeterminado es 1024 y 0 permite no aplicar ninguna longitud máxima . Esta longitud se aplica a los errores registrados, a los errores mostrados y también a $ php_errormsg, pero no a funciones llamadas explícitamente como error_log ().


httpd.conf no es el único lugar donde se puede sentar la configuración de Apache,

Por ejemplo:

si usa una conexión segura https:// su configuración adicional prevalecerá y deberá buscar la configuración en archivos como /opt/local/apache2/conf/extra/httpd-ssl.conf

Usted puede encontrar allí algo como:

ErrorLog "/var/log/apache/ssl_error.log"

Y no verá errores registrados en el archivo de registro normal, pero todos ellos irán a ssl_error.log