Fehlerbehebung
PHP-Fehler für eine bestimmte Datei protokollieren
In Anwendungen in der Produktion muss die Fehleranzeige deaktiviert bleiben, damit Besucher keine Pfade, Abfragen oder anderen internen Daten sehen.
Debuggen Sie am besten in einer Staging-Umgebung, die das Problem nachstellt. Wenn Sie ausnahmsweise eine Datei in der Produktion diagnostizieren müssen und PHP sie ausführt, lassen Sie display_errors deaktiviert und schreiben Sie die Fehler in ein privates Protokoll außerhalb von public_html:
error_reporting(E_ALL); ini_set('display_errors', '0'); ini_set('log_errors', '1'); ini_set('error_log', '/home/CPANEL_USUARIO/logs/php-debug.log');
error_reporting legt fest, welche Fehler protokolliert werden, und E_ALL setzt die höchste Stufe.
Diese Direktiven gelten während der Ausführung. Sie können keinen Syntax- oder Kompilierfehler derselben Datei protokollieren, wenn dieser Fehler verhindert, dass PHP sie überhaupt ausführt. Aktivieren Sie in diesem Fall zuerst das Protokoll für die tatsächlich genutzte PHP-Version in cPanel oder nutzen Sie eine gültige Hilfsdatei, die diese Direktiven setzt und danach die zu prüfende Datei einbindet.
Legen Sie vor dem Test das Verzeichnis außerhalb des Web-Stammverzeichnisses an und schützen Sie die Datei mit den Rechten 0600. Beschränken Sie die Erfassung auf die unbedingt nötige Zeit und vermeiden Sie es, sensible Daten zu protokollieren.
Entfernen Sie am Ende diese Zeilen aus der Datei, prüfen Sie, dass display_errors weiterhin deaktiviert ist, und löschen Sie das Protokoll, sobald es für die Diagnose nicht mehr gebraucht wird.
Tatsächliche Reichweite dieser Zeilen
Auch wenn Sie sie in eine bestimmte Datei setzen, wirken die Einstellungen auf den Rest dieser PHP-Ausführung, einschließlich später geladener Dateien; sie filtern das Protokoll nicht so, dass nur Fehler dieser Datei erscheinen. Wenn Sie den Test eingrenzen müssen, nutzen Sie eine kontrollierte Anfrage und filtern Sie ihre Einträge nach Uhrzeit und Pfad.
Fügen Sie den Code an einer gültigen PHP-Stelle ein: Eine Anweisung declare(strict_types=1) oder ein namespace kann Anforderungen an die Position haben. Setzen Sie Anweisungen nicht automatisch vor jede beliebige Datei. Prüfen Sie die Syntax mit derselben PHP-Version, bevor Sie den Fehler nachstellen.
Das könnte Ihnen auch helfen
- Fehler in PHP-Anwendungen oder -Dateien debuggen Diagnostizieren Sie eine weiße Seite oder einen Fehler 500, indem Sie den Fehler nachstellen und zue...
- PHP-Fehlerprotokoll über die Datei .htaccess aktivieren Konfigurieren Sie .htaccess so, dass PHP-Fehler vorübergehend außerhalb von public_html protokollier...
- Xdebug zum Debuggen von entferntem PHP-Code Richten Sie eine entfernte Xdebug-3-Sitzung über einen privaten Trigger und einen umgekehrten SSH-Tu...
- auto_prepend_file und auto_append_file Verfolgen Sie die Anfrage, die eine Anwendung erneut infiziert, indem Sie mit auto_prepend_file nur...
Stimmt etwas nicht oder hat sich etwas geändert? Erzählen Sie es uns, und wir prüfen es.