2010-08-20 36 views

Respuesta

6

Observe la opción de configuración log_errors en php.ini. Parece hacer justo lo que quieres. Creo que puede usar la opción error_log para establecer su propio archivo de registro también.

Cuando la directiva log_errors se establece en On, los errores reportados por PHP habría que iniciar sesión para el registro del servidor o el archivo especificado con error_log. Puede configurar estas opciones también con ini_set, si es necesario.

(Tenga en cuenta que display_errors debe ser desactivado en php.ini si esta opción está activada)

+1

'¿Por qué display_errors' ser desactivada si habilitar 'log_errors'? No tiene sentido en mi opinión. :) –

+5

Porque no hay necesidad de mostrar el contenido de los errores al público en un servidor de producción, especialmente si el texto del error se registra de forma discreta en un archivo. – Shabbyrobe

+3

Los errores de visualización siempre deben deshabilitarse en el servidor de producción. No si el registro de errores está configurado en otro lugar, pero siempre. Los errores se registran en el registro de errores de apache de manera predeterminada, eso es suficiente. – Pihhan

293

utilizar el siguiente código:

ini_set("log_errors", 1); 
ini_set("error_log", "/tmp/php-error.log"); 
error_log("Hello, errors!"); 

a continuación, ver el archivo:

tail -f /tmp/php-error.log 

O actualice php.ini como se describe en this blog entry de 2008.

+38

'ini_set' solo funciona si ese código se ejecuta. No es útil para el código que tiene * errores de análisis * porque el error será * antes * de que se ejecute el código. En su lugar, escriba esos cambios en php.ini. – hakre

+8

Si no puede editar php.ini, debe poder agregar esto en .htaccess: 'php_flag log_errors en php_value error_log/home/path/public_html/domain/PHP_errors.log'. Ver http://perishablepress.com/how-to-enable-php-error-logging-via-htaccess/ – Matthieu

+0

Tengo una pregunta, ¿cómo hacer que el archivo error.log se cree en mi carpeta htdocs en su lugar? – Tommy

15

añadir este código en .htaccess (si usted no tiene acceso a php.ini )

<IfModule mod_php5.c> 
php_flag log_errors on 
php_value error_log ./path_to_MY_PHP_ERRORS.log 
</IfModule> 

P. S. esto es para servidores de tipo Apache.

+6

Sin embargo, esto tiene que ver específicamente con el módulo PHP de Apache. – SacredSkull

0

Además, necesita la directiva "AllowOverride Options" para que esto funcione. (Apache 2.2.15)

2

Esa es mi función corta personales

# logging 
/* 
[2017-03-20 3:35:43] [INFO] [file.php] Here we are 
[2017-03-20 3:35:43] [ERROR] [file.php] Not good 
[2017-03-20 3:35:43] [DEBUG] [file.php] Regex empty 

mylog ('hallo') -> INFO 
mylog ('fail', 'e') -> ERROR 
mylog ('next', 'd') -> DEBUG 
mylog ('next', 'd', 'debug.log') -> DEBUG file debug.log 
*/ 
function mylog($text, $level='i', $file='logs') { 
    switch (strtolower($level)) { 
     case 'e': 
     case 'error': 
      $level='ERROR'; 
      break; 
     case 'i': 
     case 'info': 
      $level='INFO'; 
      break; 
     case 'd': 
     case 'debug': 
      $level='DEBUG'; 
      break; 
     default: 
      $level='INFO'; 
    } 
    error_log(date("[Y-m-d H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file); 
} 
5

En pocas palabras estos códigos en la parte superior de su archivo PHP/index:

error_reporting(E_ALL); // Error engine 

ini_set('display_errors', TRUE); // Error display 

ini_set('log_errors', TRUE); // Error logging 

ini_set('error_log', 'your/path/to/errors.log'); // Logging file 

ini_set('log_errors_max_len', 1024); // Logging file size 
+0

Eso es sólo si * * También desea que todos los errores que se muestran en la producción y/o al navegador, * * Además de la tala. 'Display_errors' NUNCA debe ser activada en un servidor de producción en vivo - dicha Directiva es específicamente para la salida al usuario, y no tiene ningún efecto sobre la tala. http://www.php.net/manual/en/errorfunc.configuration.php#ini.display_errors –

Cuestiones relacionadas