Risposte:
Usa il seguente codice:
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );
Quindi guarda il file:
tail -f /tmp/php-error.log
O aggiorna php.inicome descritto in questo post di blog dal 2008.
php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log. Vedi perishablepress.com/…
tmp/php-error.logquale posizione desideri?
Vedere
error_log - Invia un messaggio di errore da qualche parteEsempio
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
È possibile personalizzare la gestione degli errori con i propri gestori degli errori per chiamare questa funzione per l'utente ogni volta che si verifica un errore o un avviso o qualunque cosa sia necessario registrare. Per ulteriori informazioni, consultare il capitolo Gestione degli errori nel Manuale PHP
Metti semplicemente questi codici in cima al tuo file PHP / index:
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_errorsnon dovrebbe MAI essere attivato su un server di produzione live - tale direttiva è specifica per l'output per l'utente e non ha alcun effetto sulla registrazione. php.net/manual/it/…
aggiungi questo codice in .htaccess (in alternativa alla funzione 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>
* come commentato: questo è per server di tipo Apache e non per Nginx o altri.
Questa è la mia funzione personale breve
# 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);
}
Dai un'occhiata log_errorsall'opzione di configurazione in php.ini. Sembra fare proprio quello che vuoi. Penso che tu possa usare l' error_logopzione per impostare anche il tuo file di registrazione.
Quando la log_errorsdirettiva è impostata su On, tutti gli errori segnalati da PHP verrebbero registrati nel registro del server o nel file specificato con error_log. Puoi impostare anche queste opzioni ini_set, se necessario.
(Nota che display_errorsdovrebbe essere disabilitato in php.ini se questa opzione è abilitata)
display_errorsessere disabilitato se si abilita log_errors? Non ha senso secondo me. :)
ini_setfunziona solo se quel codice viene eseguito. Non utile per il codice che presenta errori di analisi perché l'errore sarà prima dell'esecuzione del codice. Invece scrivi quelle modifiche in php.ini.