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.ini
come 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.log
quale 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_errors
non 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_errors
all'opzione di configurazione in php.ini. Sembra fare proprio quello che vuoi. Penso che tu possa usare l' error_log
opzione per impostare anche il tuo file di registrazione.
Quando la log_errors
direttiva è 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_errors
dovrebbe essere disabilitato in php.ini se questa opzione è abilitata)
display_errors
essere disabilitato se si abilita log_errors
? Non ha senso secondo me. :)
ini_set
funziona 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.