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:
- El usuario bajo el cual se estaba ejecutando Apache no tenía permisos para modificar el archivo
php_error_log
. - 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 archivoerror_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í.
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