Antworten:
Verwenden Sie den folgenden Code:
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );
Dann schauen Sie sich die Datei an:
tail -f /tmp/php-error.log
Oder aktualisieren Sie php.iniwie in diesem Blogeintrag von 2008 beschrieben.
php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log. Siehe perishablepress.com/...
tmp/php-error.logdem gewünschten Ort?
Sehen
error_log - Senden Sie irgendwo eine FehlermeldungBeispiel
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
Sie können die Fehlerbehandlung mit Ihren eigenen Fehlerbehandlungsroutinen anpassen , um diese Funktion für Sie aufzurufen, wenn ein Fehler oder eine Warnung auftritt oder was auch immer Sie protokollieren müssen. Weitere Informationen finden Sie im Kapitel Fehlerbehandlung im PHP-Handbuch
Fügen Sie einfach diese Codes oben in Ihre PHP / Index-Datei ein:
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
Fügen Sie diesen Code in .htaccess hinzu (als Alternative zur Funktion 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>
* wie kommentiert: Dies gilt für Server vom Apache- Typ und nicht für Nginx oder andere.
Das ist meine persönliche Kurzfunktion
# 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);
}
Schauen Sie sich die log_errorsKonfigurationsoption in der php.ini an. Es scheint genau das zu tun, was Sie wollen. Ich denke, Sie können die error_logOption auch verwenden, um Ihre eigene Protokolldatei festzulegen.
Wenn die log_errorsDirektive auf gesetzt ist On, werden alle von PHP gemeldeten Fehler im Serverprotokoll oder in der mit angegebenen Datei protokolliert error_log. Sie können diese Optionen bei ini_setBedarf auch mit einstellen .
(Bitte beachten Sie, dass display_errorsdies in der php.ini deaktiviert sein sollte, wenn diese Option aktiviert ist.)
display_errorsdeaktiviert werden, wenn Sie aktivieren log_errors? Macht meiner Meinung nach keinen Sinn. :)
ini_setfunktioniert nur, wenn dieser Code ausgeführt wird. Nicht nützlich für Code mit Analysefehlern, da der Fehler vor der Ausführung des Codes auftritt. Schreiben Sie diese Änderungen stattdessen in die php.ini.