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.ini
wie 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.log
dem 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_errors
Konfigurationsoption in der php.ini an. Es scheint genau das zu tun, was Sie wollen. Ich denke, Sie können die error_log
Option auch verwenden, um Ihre eigene Protokolldatei festzulegen.
Wenn die log_errors
Direktive 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_set
Bedarf auch mit einstellen .
(Bitte beachten Sie, dass display_errors
dies in der php.ini deaktiviert sein sollte, wenn diese Option aktiviert ist.)
display_errors
deaktiviert werden, wenn Sie aktivieren log_errors
? Macht meiner Meinung nach keinen Sinn. :)
ini_set
funktioniert 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.