Dies ist ein Problem der geladenen Konfiguration gegenüber der Laufzeitkonfiguration
Es ist wichtig zu erkennen, dass ein Syntaxfehler oder ein Parse-Fehler während der kompilieren o Parsing Schritt, was bedeutet, dass PHP den Vorgang abbricht, bevor es überhaupt die Chance hatte, Ihren Code auszuführen. Wenn Sie also PHPs display_errors
Konfiguration während der Laufzeit (dies umfasst alles von der Verwendung ini_set
in Ihrem Code auf die Verwendung von .htaccess, einer Laufzeitkonfigurationsdatei, umstellen, dann wird nur der Standard geladene Konfigurationseinstellungen sind im Spiel.
Wie man WSOD in der Entwicklung immer vermeidet
Um einen WSOD zu vermeiden, müssen Sie sicherstellen, dass Ihr geladene Konfigurationsdatei hat display_errors
an und error_reporting
eingestellt auf -1
( dies ist das Äquivalent zu E_ALL, da es sicherstellt, dass alle Bits aktiviert sind, unabhängig davon, welche PHP-Version Sie verwenden ). Geben Sie den konstanten Wert von E_ALL nicht fest ein, da sich dieser Wert zwischen verschiedenen PHP-Versionen ändern kann.
Geladene Konfiguration ist entweder Ihre geladene php.ini
Datei oder Ihr apache.conf
o httpd.conf
oder der Datei virtualhost. Diese Dateien werden nur einmal während der Startphase gelesen (z. B. beim ersten Start von apache httpd oder php-fpm) und nur durch Konfigurationsänderungen zur Laufzeit überschrieben. Stellen Sie sicher, dass display_errors = 1
y error_reporting = -1
in Ihrer geladenen Konfigurationsdatei stellt sicher, dass Sie niemals eine WSOD unabhängig von Syntax- oder Parse-Fehlern, die vor einer Laufzeitänderung auftreten, wie ini_set('display_errors', 1);
o error_reporting(E_ALL);
stattfinden kann.
Wie Sie Ihre (php.ini) geladenen Konfigurationsdateien finden
Um Ihre geladene(n) Konfigurationsdatei(en) zu finden, erstellen Sie einfach eine neue PHP-Datei, die nur den folgenden Code enthält...
<?php
phpinfo();
Richten Sie dann Ihren Browser dorthin und sehen Sie sich Geladene Konfigurationsdatei y Zusätzliche .ini-Dateien geparst die normalerweise an der Spitze Ihrer phpinfo()
und enthält den absoluten Pfad zu allen geladenen Konfigurationsdateien.
Wenn Sie sehen (none)
anstelle der Datei, bedeutet das, dass Sie keine php.ini in Pfad der Konfigurationsdatei (php.ini) . Sie können also Laden Sie die mit PHP gebündelte php.ini von hier herunter und kopieren Sie sie als php.ini in den Pfad Ihrer Konfigurationsdatei. Stellen Sie dann sicher, dass Ihr php-Benutzer über ausreichende Rechte verfügt, um diese Datei zu lesen. Sie müssen httpd oder php-fpm neu starten, um die Datei zu laden. Denken Sie daran, dies ist die Entwicklung php.ini-Datei, die mit dem PHP-Quellcode mitgeliefert wird. Verwenden Sie sie also bitte nicht in der Produktion!
Tun Sie dies einfach nicht in der Produktion
Dies ist wirklich der beste Weg, um einen WSOD in der Entwicklung zu vermeiden. Jeder, der vorschlägt, dass Sie die ini_set('display_errors', 1);
o error_reporting(E_ALL);
am Anfang Ihres PHP-Skripts oder die Verwendung von .htaccess, wie Sie es hier getan haben, wird Ihnen nicht helfen, einen WSOD zu vermeiden, wenn ein Syntax- oder Parse-Fehler auftritt (wie in Ihrem Fall hier), wenn Ihre geladene Konfigurationsdatei display_errors
ausgeschaltet.
Viele Leute (und Standardinstallationen von PHP) verwenden eine production-ini-Datei, die display_errors
standardmäßig deaktiviert, was in der Regel zu der gleichen Frustration führt, die Sie hier erlebt haben. Denn PHP hat es bereits ausgeschaltet, wenn es startet, dann einen Syntax- oder Parse-Fehler feststellt und mit nichts in der Ausgabe zurückkommt. Sie erwarten, dass Ihr ini_set('display_errors',1);
am Anfang Ihres PHP-Skripts sollte das verhindern, aber es macht nichts, wenn PHP Ihren Code nicht parsen kann, weil er die Laufzeitumgebung nie erreicht hat.
1 Stimmen
coding.smashingmagazine.com/2011/11/30/
5 Stimmen
@JuannStrauss, Das ist noch untertrieben. Und wenn Sie schließlich siehe die Fehler, es heißt
T_PAAMAYIM_NEKUDOTAYIM
. Oder vielleicht "muss eine Instanz von integer sein, integer gegeben" .2 Stimmen
Anleitung dazu: code2real.blogspot.com/2015/06/
0 Stimmen
Wenn Sie einen Parse-Fehler haben, funktioniert bei vielen Webhosts nichts davon, und Sie haben möglicherweise keinen Zugriff auf die Fehlerprotokolle. Sie müssen php auf Ihrem lokalen Rechner installieren (XAMPP unter Windows usw.) und einen Synax-Check auf der Kommandozeile durchführen
php.exe -l <your file name>