Wie man alle Fehler und Warnungen einschaltet und sie in eine Datei protokolliert, aber alles innerhalb des Skripts einrichtet (nichts in der php.ini ändert). Ich möchte einen Dateinamen definieren und damit alle Fehler und Warnungen eingeloggt werden.Wie protokolliert man Fehler und Warnungen in einer Datei?
Antwort
Siehe
error_log
- Versenden Sie eine Fehlermeldung irgendwo
Beispiel
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
Sie können customize error handling with your own error handlers für Sie diese Funktion aufrufen, wenn ein Fehler oder eine Warnung oder was auch immer Sie brauchen, zu protokollieren tritt auf. Weitere Informationen finden Sie unter Chapter Error Handling in the PHP Manual
Schauen Sie sich die Konfigurationsoption log_errors
in php.ini an. Es scheint genau das zu tun, was du willst. Ich denke, Sie können die Option error_log
verwenden, um Ihre eigene Logging-Datei zu setzen.
Wenn die log_errors
Richtlinie On
gesetzt ist, Fehler von PHP berichtet würde den Server-Log oder mit error_log
angegebenen Datei protokolliert werden. Sie können diese Optionen auch mit ini_set
einstellen, wenn Sie müssen.
(Bitte beachten Sie, dass display_errors
sollte in der php.ini deaktiviert werden, wenn diese Option aktiviert ist)
Verwenden Sie den folgenden Code ein:
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log("Hello, errors!");
dann die Datei sehen:
tail -f /tmp/php-error.log
Oder aktualisieren Sie php.ini
wie in this blog entry von 2008 beschrieben.
'ini_set' funktioniert nur, wenn dieser Code ausgeführt wird. Nicht nützlich für Code, der * Parse Fehler * hat, weil der Fehler * vor * der Code ausgeführt wird. Schreiben Sie diese Änderungen stattdessen in die php.ini. – hakre
Wenn Sie die php.ini nicht bearbeiten können, sollten Sie diese in der .htaccess-Datei hinzufügen können: 'php_flag log_errors on php_value error_log/home/pfad/public_html/domain/PHP_errors.log'. Siehe http://perishablepress.com/how-to-enable-php-error-logging-via-htaccess/ – Matthieu
Ich habe eine Frage, wie Sie die error.log-Datei erhalten, um stattdessen in meinem htdocs-Ordner erstellt zu werden? – Tommy
diesen Code in .htaccess hinzufügen (falls Sie haben Zugriff auf php.ini nicht)
<IfModule mod_php5.c>
php_flag log_errors on
php_value error_log ./path_to_MY_PHP_ERRORS.log
</IfModule>
P. S. Dies ist für Apache-Server.
Dies ist jedoch sehr spezifisch mit dem PHP-Modul von Apache zu tun. – SacredSkull
Darüber hinaus müssen Sie die Direktive "AllowOverride Options" verwenden, damit dies funktioniert. (Apache 2.2.15)
, dass meine kurze Funktion ist
# 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);
}
einfach diese Codes setzen in oben auf Ihrer PHP/Index-Datei:
error_reporting(E_ALL); // Error engine
ini_set('display_errors', TRUE); // Error display
ini_set('log_errors', TRUE); // Error logging
ini_set('error_log', 'your/path/to/errors.log'); // Logging file
ini_set('log_errors_max_len', 1024); // Logging file size
Das nur, wenn Sie * auch * wollen, dass alle Fehler in der Ausgabe und/oder im Browser angezeigt werden, * zusätzlich * zur Protokollierung. 'display_errors' sollte NIEMALS auf einem Live-Produktionsserver aktiviert sein - diese Anweisung dient speziell zur Ausgabe an den Benutzer und hat keine Auswirkungen auf die Protokollierung. http://www.php.net/manual/en/errorfunc.configuration.php#ini.display_errors –
- 1. Wie protokolliert man alle Doctrine-Abfragen in einer Datei?
- 2. Wie protokolliert man jedes Browserkonsolenprotokollereignis?
- 3. Wie protokolliert man die Druckanweisung und Fehlermeldungen in PyS60?
- 4. Wie protokolliert man unbelegte Ausnahmen einer QApplication?
- 5. Wie protokolliert man Fehler, Nachrichten in einem NUnit Unit-Test?
- 6. ASP.NET-Webanwendung in Azure - Wie protokolliert man Fehler?
- 7. Wie Fehler, Hinweise und Warnungen zeigen
- 8. Wie protokolliert man gelöschte Dateien auf Ubuntu?
- 9. Wie protokolliert man die gesamte StackTrace einer Anwendung in .NET
- 10. Wie protokolliert man "catched" Ausnahmen?
- 11. CMake Färbung Fehler und Warnungen
- 12. Elmah protokolliert nur 15 Fehler
- 13. Wie protokolliert man global Fehler in einer ASP.NET MVC-Anwendung? (im Gegensatz zu versuchen/Aussagen überall)
- 14. Wie protokolliert man eine Entität mit Sammlungen?
- 15. Apple-Mach-O Linker Warnungen und Fehler
- 16. Wie protokolliert man Nachrichten auf der Konsole und eine Datei in Golang?
- 17. Wie protokolliert man Trace-Nachrichten mit log4net?
- 18. Wie protokolliert man farbige Nachrichten mit grunt.log
- 19. Wie wird die Datenrahmenausgabe in Warnungen und Fehler einbezogen?
- 20. Wie man Variablen im Django-Quellcode protokolliert
- 21. Fehler/Warnungen Liste in IDEA
- 22. coldfusion application.cfm Fehlerprotokoll protokolliert nicht alle Fehler
- 23. Wie JS-Fehler von einem Client in Kibana protokolliert werden?
- 24. Wie protokolliert man die JDBC-Verbindungsaktivität?
- 25. wie verlassen und die Daten in der Datei zur gleichen Zeit in Make-Datei protokolliert, wenn Fehler
- 26. Wie protokolliert man alle Aufrufe einer Funktion in PHP? (mail() Funktion)
- 27. Wie man Warnungen in vim-Latex unterdrückt?
- 28. Selen - Wie protokolliert man jeden ausgeführten Schritt?
- 29. Konsolenintegration: Wie viele Fehler/Warnungen werden ausgegeben?
- 30. Wie protokolliert man Daten in Dateien im Play-Framework?
Warum sollte 'display_errors' wenn Sie deaktiviert werden Aktiviere 'log_fehler'? Meiner Meinung nach macht das keinen Sinn. :) –
Da der Inhalt der Fehler auf einem Produktionsserver nicht öffentlich ausgegeben werden muss, insbesondere wenn der Fehlertext diskret in einer Datei protokolliert wird. – Shabbyrobe
Anzeigefehler sollten auf dem Produktionsserver immer deaktiviert sein. Nicht, wenn die Fehlerprotokollierung an anderer Stelle, aber immer konfiguriert ist. Fehler werden standardmäßig im Apache-Fehlerprotokoll protokolliert, das ist oft genug. – Pihhan