Respuestas:
Utiliza el siguiente código:
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );
Luego mira el archivo:
tail -f /tmp/php-error.log
O actualice php.ini
como se describe en esta entrada de blog de 2008.
php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log
. Ver perishablepress.com/…
tmp/php-error.log
la ubicación que desees.
Ver
error_log
- Enviar un mensaje de error a alguna parteEjemplo
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
Puede personalizar el manejo de errores con sus propios manejadores de errores para llamar a esta función por usted cada vez que ocurra un error o advertencia o lo que necesite para iniciar sesión. Para obtener información adicional, consulte el Capítulo Manejo de errores en el Manual de PHP
Simplemente ponga estos códigos en la parte superior de su archivo PHP / índice:
error_reporting(E_ALL); // Error/Exception engine, always use E_ALL
ini_set('ignore_repeated_errors', TRUE); // always use TRUE
ini_set('display_errors', FALSE); // Error/Exception display, use FALSE only in production environment or real server. Use TRUE in development environment
ini_set('log_errors', TRUE); // Error/Exception file logging engine.
ini_set('error_log', 'your/path/to/errors.log'); // Logging file path
display_errors
NUNCA debe activarse en un servidor de producción en vivo: esa directiva es específicamente para la salida al usuario y no tiene ningún efecto en el registro. php.net/manual/en/…
agregue este código en .htaccess (como alternativa a la función php.ini / ini_set ):
<IfModule mod_php5.c>
php_flag log_errors on
php_value error_log ./path_to_MY_PHP_ERRORS.log
# php_flag display_errors on
</IfModule>
* como se comentó: esto es para servidores de tipo Apache , y no para Nginx u otros.
Esa es mi corta función personal
# 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);
}
Eche un vistazo a la log_errors
opción de configuración en php.ini. Parece hacer justo lo que quieres. Creo que también puede usar la error_log
opción para configurar su propio archivo de registro.
Cuando la log_errors
directiva se establece en On
, cualquier error informado por PHP se registrará en el registro del servidor o en el archivo especificado con error_log
. También puede configurar estas opciones ini_set
si es necesario.
(Tenga en cuenta que display_errors
debe deshabilitarse en php.ini si esta opción está habilitada)
display_errors
deshabilitarse si habilita log_errors
? No tiene sentido en mi opinión. :)
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 cambio, escriba esos cambios en php.ini.