2011-09-21 35 views
14

El método PHP error_log no escribe errores en el archivo de registro de errores personalizado. Sólo se escribirá a /var/log/apache2/php_error.logEl método PHP error_log no escribe errores en mi archivo de registro de errores

Aquí están las opciones de registro en mi php.ini:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE 
display_errors = Off 
log_errors = On 
log_errors_max_len = 0 ; also tried with 9999999 
error_log = /var/log/apache2/php_errors.log 

PHP escribe sus errores en el registro de errores de Apache regulares (/var/log/apache2/error.log) en lugar de el que especifiqué arriba.

cosas que ya trataron:

  1. que detener y reiniciar Apache después de cambiar el archivo php.ini
  2. El archivo es /var/log/apache2/php_errors.log permisos 777 y el archivo existe.
  3. No hay otros archivos php.ini que reemplacen. (Hay /etc/php5/cli/php.ini pero no estoy usando cli).
  4. no hay otras error_log = xxx configuración más abajo en el archivo php.ini que podría invalidar la primera
  5. phpinfo() dice error_log = /var/log/apache2/php_errors.log (es decir, el archivo correcto), ambos bajo valor local y Master Valor
  6. La escritura de la prueba que estoy usando para generar errores no contiene ninguna ini_set llama

(FYI: estoy usando Apache/2.2.17 y PHP/5.3. 5-1ubuntu7.2 en Ubuntu 11.04)

¿Qué estoy haciendo mal?

+1

has de cambiar el nombre de archivo a algún otro sitio? ¿O probar alguna otra carpeta? – Olli

+1

Comprueba qué archivo php.ini está cargado (mira el resultado de la función phpinfo()) – classic

+0

Gracias Olli, lo cambié a /usr/php_errors.log y ahora funciona. –

Respuesta

1

eliminar php_errors.log y reiniciar apache2, el servidor creará un nuevo archivo php_errors.log con el permiso y el propietario adecuados.

rm -f /var/log/apache2/php_errors.log 
service apache2 restart 

ll /var/log/apache2/php_errors.log 
2

Usted podría tratar de especificar el nombre de archivo de la siguiente manera:

estoy usando Apache 2.2.22 en Ubuntu.

Use este comando PHP:

error_log("eric", 3, "/home/el/error.log"); 

El primer parámetro es el mensaje que se enviará al registro de errores. El segundo parámetro 3 significa "esperar un destino de nombre de archivo El tercer parámetro es el destino

Cree el /home/el/error.log archivo y establezca su propiedad a esto:..

[email protected]:~$ ll error.log 
-rwxrwxr-x 1 www-data www-data 7 Dec 13 14:30 error.log 

Cuando el PHP interpreta el método error_log, añade el mensaje a su archivo

Fuente:. http://www.php.net/manual/en/function.error-log.php

0

puede configurar el archivo de registro de errores para un sitio en la configuración del sitio VirtualHost archivo, e.g: /etc/apache2/sites-enabled/example.com.conf:

<VirtualHost *:80> 

    .... 

    ErrorLog ${APACHE_LOG_DIR}/www.example.com-error.log 
    LogLevel warn 
    CustomLog ${APACHE_LOG_DIR}/www.example.com-access.log combined 

</VirtualHost> 

En el sistema UNIX ${APACHE_LOG_DIR} es generalmente /var/log/apache2 Los errores y el acceso será guardado en ${APACHE_LOG_DIR}/www.example.com-error.log y ${APACHE_LOG_DIR}/www.example.com-access.log.

9

Me gustaría responder a esto, ya que es un gran resultado en Google, aunque es una vieja pregunta.

Resolví esto agregando permisos de escritura para todos los usuarios en el directorio de registro.

En mi caso, el usuario 'http' necesaria para ser capaz de escribir en/var/log/httpd/así que corrí

# chmod a+w /var/log/httpd 

Si el archivo ya existe, puede ayudar a eliminar primero y permite que Apache lo cree.

Mi archivo php.ini incluía la ruta completa, también.

error_log = /var/log/httpd/php_errors.log 
-4

pasé varias horas de hoy tratando de averiguar por qué esto no estaba trabajando y tratando de depurar el código de trabajo en torno al hecho de que podía entrar nada para el registro de errores php. Huelga decir que iba a paso de tortuga hasta que logré que la explotación funcionara.

Supongo que más del 90% de las veces es un problema de permiso. En mi caso, daemon era el propietario y el grupo para el archivo de registro y tuve que sudo su para rootear y luego cambiar los permisos del archivo de registro. He cambiado a:

chmod 777 myphperror.log

gracias a Dios por stackoverflow.com

+0

El OP dijo que habían revisado los permisos. Tu respuesta no agrega nada. – betseyb

+2

Referencia religiosa inapropiada también –

+2

cuando tu respuesta es chmod 777, hay una gran probabilidad de que no sea la correcta. – Andrea

Cuestiones relacionadas