Wie protokolliere ich Fehler und Warnungen in einer Datei?
Lesezeit: 4 Minuten
Gorep
Wie schalte ich alle Fehler und Warnungen ein und protokolliere sie in einer Datei, aber um all das innerhalb des Skripts einzurichten (ohne etwas in php.ini zu ändern)?
Ich möchte einen Dateinamen definieren und damit alle Fehler und Warnungen darin protokolliert werden.
Oder aktualisieren php.ini wie beschrieben in diesen Blogeintrag ab 2008.
ini_set funktioniert nur, wenn dieser Code ausgeführt wird. Nicht nützlich für Code, der hat Fehler analysieren weil der Fehler sein wird Vor der Code wird ausgeführt. Schreiben Sie diese Änderungen stattdessen in die php.ini.
– hakre
16. April 2013 um 23:31 Uhr
Wenn Sie die php.ini nicht bearbeiten können, sollten Sie dies in der .htaccess hinzufügen können: php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log. Sehen perishablepress.com/…
– Matthias
8. Januar 2014 um 8:47 Uhr
Ich habe eine Frage, wie bekomme ich die error.log-Datei stattdessen in meinem htdocs-Ordner erstellt?
– Tommi
5. März 2014 um 21:51 Uhr
Ich schätze, du änderst einfach den Ordner von tmp/php-error.log an welchen Ort Sie sich wünschen?
– Lukas
16. April 2014 um 12:37 Uhr
Dies bringt mein PHP in 5.4.0 zum Absturz
– Ky.
10. Mai 2014 um 3:05 Uhr
Gordon
Sehen
error_log — Senden Sie irgendwo eine Fehlermeldung
Außer PHP kann nichts protokollieren, wenn ein schwerwiegender Fehler aufgetreten ist.
– Salmann A
7. Juli 2021 um 13:24 Uhr
Yousha Aleayoub
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
Das ist nur, wenn Sie Auch dass alle Fehler in der Ausgabe und/oder im Browser angezeigt werden sollen, Zusätzlich zum Protokollieren. display_errors sollte NIEMALS auf einem Live-Produktionsserver eingeschaltet werden – diese Anweisung ist speziell für die Ausgabe an den Benutzer und hat keine Auswirkung auf die Protokollierung. php.net/manual/en/…
– Aaron Wallentine
9. März 2018 um 22:51 Uhr
T.Todua
Fügen Sie diesen Code in die Datei ein .htaccess (Alternativ zu file php.ini oder der ini_set Funktion):
<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: das ist für Apache-Typ Server, 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);
}
Eine Erklärung wäre angebracht. ZB, was ist die Idee/der Kern? Bitte antworten Sie, indem Sie Ihre Antwort bearbeiten (ändern), nicht hier in den Kommentaren (ohne “Bearbeiten:”, “Aktualisieren:” oder ähnliches – die Antwort sollte so aussehen, als wäre sie heute geschrieben).
– Peter Mortensen
15. September 2021 um 23:23 Uhr
Amal Murali
Werfen Sie einen Blick auf die log_errors Konfigurationsoption in php.ini. Es scheint genau das zu tun, was Sie wollen. Ich denke, du kannst die verwenden error_log Möglichkeit, auch Ihre eigene Protokolldatei festzulegen.
Wenn das log_errors Richtlinie eingestellt ist Onwerden alle von PHP gemeldeten Fehler im Serverprotokoll oder in der mit angegebenen Datei protokolliert error_log. Sie können diese Optionen mit einstellen ini_set auch wenn es sein muss.
(Bitte beachte, dass display_errors sollte in php.ini deaktiviert werden, wenn diese Option aktiviert ist)
Eine Erklärung wäre angebracht. ZB, was ist die Idee/der Kern? Bitte antworten Sie, indem Sie Ihre Antwort bearbeiten (ändern), nicht hier in den Kommentaren (ohne “Bearbeiten:”, “Aktualisieren:” oder ähnliches – die Antwort sollte so aussehen, als wäre sie heute geschrieben).
– Peter Mortensen
15. September 2021 um 23:23 Uhr
Stephan
Außerdem benötigen Sie die Direktive “AllowOverride Options”, damit dies funktioniert. (Apache 2.2.15)
9886700cookie-checkWie protokolliere ich Fehler und Warnungen in einer Datei?yes