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.inicomo 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.logla 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_errorsNUNCA 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_errorsopción de configuración en php.ini. Parece hacer justo lo que quieres. Creo que también puede usar la error_logopción para configurar su propio archivo de registro.
Cuando la log_errorsdirectiva 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_setsi es necesario.
(Tenga en cuenta que display_errorsdebe deshabilitarse en php.ini si esta opción está habilitada)
display_errorsdeshabilitarse si habilita log_errors? No tiene sentido en mi opinión. :)
ini_setsolo 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.