Ich habe meine PHP-INI-Datei ( php.ini
) überprüft und display_errors
ist eingestellt und auch Fehlerberichterstattung ist E_ALL
. Ich habe meinen Apache-Webserver neu gestartet.
Ich habe diese Zeilen sogar oben in mein Skript eingefügt, und es werden nicht einmal einfache Analysefehler abgefangen. Zum Beispiel deklariere ich Variablen mit a "$"
und schließe keine Anweisungen ";"
. Alle meine Skripte zeigen eine leere Seite zu diesen Fehlern an, aber ich möchte die Fehler tatsächlich in meiner Browserausgabe sehen.
error_reporting(E_ALL);
ini_set('display_errors', 1);
Was bleibt zu tun?
$_REQUEST
Parameter aktivieren möchten ), funktionieren diese beiden Zeilen die meiste Zeit.Antworten:
Das funktioniert bei mir immer:
Dies führt jedoch nicht dazu, dass PHP Analysefehler anzeigt. Die einzige Möglichkeit, diese Fehler anzuzeigen, besteht darin, Ihre php.ini mit der folgenden Zeile zu ändern:
(Wenn Sie keinen Zugriff auf haben
php.ini
,.htaccess
funktioniert das Einfügen dieser Zeile möglicherweise auch):quelle
php_flag display_errors 1
für .htaccessE_ALL
reicht nicht aus, um alle Fehler in PHP 5.3 anzuzeigen . "E_STRICT
wurde Teil vonE_ALL
in 5.4.0" - PHP-Handbuch Sie benötigenE_ALL | E_STRICT
oder-1
in dieser Version.Sie können keine Analysefehler abfangen, wenn Sie die Fehlerausgabe zur Laufzeit aktivieren, da die Datei analysiert wird, bevor tatsächlich etwas ausgeführt wird (und da dabei ein Fehler auftritt, wird nichts ausgeführt). Sie müssen die tatsächliche Serverkonfiguration so ändern, dass display_errors aktiviert ist und die entsprechende Fehlerberichterstattungsstufe verwendet wird. Wenn Sie keinen Zugriff auf php.ini haben, können Sie je nach Server möglicherweise .htaccess oder ähnliches verwenden.
Diese Frage kann zusätzliche Informationen liefern.
quelle
In Ihrer php.ini :
Starten Sie dann Ihren Webserver neu.
quelle
sudo service apache2 restart
sudo apachectl -k restart
.Loaded Configuration File
Um alle Fehler anzuzeigen, müssen Sie:
1. Haben Sie diese Zeilen in dem PHP-Skript, das Sie vom Browser aus aufrufen (normalerweise
index.php
):2. (a) Stellen Sie sicher, dass dieses Skript keine Syntaxfehler enthält
-oder-
2. (b) Stellen Sie
display_errors = On
Ihre einphp.ini
Andernfalls können diese 2 Zeilen nicht einmal ausgeführt werden!
Sie können in Ihrem Skript nach Syntaxfehlern suchen, indem Sie Folgendes ausführen (in der Befehlszeile):
Wenn Sie das Skript aus einem anderen PHP-Skript einschließen , werden Syntaxfehler im enthaltenen Skript angezeigt . Zum Beispiel:
index.php
my_script.php
quelle
Bei einigen Webhosting-Anbietern können Sie die PHP-Parameter in der
.htaccess
Datei ändern .Sie können die folgende Zeile hinzufügen:
Ich hatte das gleiche Problem wie Sie und diese Lösung hat es behoben.
quelle
Möglicherweise funktionieren alle Einstellungen für "Fehlerberichterstattung" oder "Anzeigefehler" in PHP 7 nicht. Dies liegt daran, dass sich die Fehlerbehandlung geändert hat. Versuchen Sie stattdessen Folgendes:
Oder um Ausnahmen und Fehler auf einmal abzufangen (dies ist nicht abwärtskompatibel mit PHP 5):
quelle
try{} catch() {}
überall Code hinzufügen müssen In Ihrem bereits definierten PHP-Code möchte ich nicht einmal an das Chaos denken, das sein wird.$bt = debug_backtrace(); print_r($bt);
.Error
. Wenn Sie alle Anforderungen (außer möglicherweise JavaScript, CSS, Images usw.) in die Datei index.php umschreiben, können Sie den try catch-Block dort verwenden, um dies zu vereinfachen. Ja, jedes System, das keinen einzigen Einstiegspunkt hat, würde große Probleme beim Aktualisieren verursachen.Das wird funktionieren:
quelle
Verwenden:
Dies ist der beste Weg, um es zu schreiben, aber ein Syntaxfehler führt zu einer leeren Ausgabe. Verwenden Sie daher die Konsole, um nach Syntaxfehlern zu suchen. Der beste Weg, um PHP-Code zu debuggen, ist die Verwendung der Konsole. Führen Sie Folgendes aus:
quelle
Stellen Sie dies in Ihrer index.php- Datei ein:
quelle
Erstellen Sie eine Datei mit dem Namen php.ini in dem Ordner, in dem sich Ihre PHP-Datei befindet.
Fügen Sie in der php.ini den folgenden Code hinzu (ich gebe einen einfachen Fehler beim Anzeigen des Codes):
quelle
Hier ist ein PHP-Skript:
Eine ausführlichere Erläuterung der PHP-Fehler finden Sie unter PHP Error - error_reporting () .
quelle
Wenn Sie trotz Befolgung aller oben genannten Antworten (oder wenn Sie Ihre php.ini-Datei nicht bearbeiten können) immer noch keine Fehlermeldung erhalten, erstellen Sie eine neue PHP-Datei, die die Fehlerberichterstattung ermöglicht, und fügen Sie dann die Problemdatei hinzu. z.B:
Obwohl in meiner
php.ini
Datei alles richtig eingestellt war , war dies die einzige Möglichkeit, einen Namespace-Fehler zu erkennen. Mein genaues Szenario war:quelle
Normalerweise würde ich in meinen einfachen PHP-Projekten den folgenden Code verwenden.
quelle
Wenn Sie PHP als Apache-Modul verwenden, können Sie die Konfigurationseinstellungen mithilfe von Anweisungen in Apache-Konfigurationsdateien (z. B. httpd.conf) und .htaccess-Dateien ändern. Dazu benötigen Sie die Berechtigungen "AllowOverride Options" oder "AllowOverride All".
Überprüfen Sie dies
http://funbird.co.uk/blog/tech-articals/linux-tech-articals/enabling-error-display-php-via-htaccess
quelle
Wenn Sie sich irgendwie in einer Situation befinden, in der Sie die Einstellung nicht über ändern können,
php.ini
oder wenn Sie kein.htaccess
Glück haben, Fehler anzuzeigen, wenn Ihre PHP-Skripte Analysefehler enthalten. Sie müssten dann beschließen, die Dateien in der Befehlszeile wie folgt zu fusseln :Wenn Ihr Host so gesperrt ist, dass er das Ändern des Werts über
php.ini
oder nicht zulässt.htaccess
, kann er auch das Ändern des Werts über nicht zulassenini_set
. Sie können dies mit dem folgenden PHP-Skript überprüfen:quelle
find . -name '*.php' -type f -exec php -l {} \; | grep -v 'No syntax errors detected'
ist einfacherDa wir jetzt PHP 7 ausführen, sind die hier gegebenen Antworten nicht mehr korrekt. Der einzige, der noch in Ordnung ist, ist der von Frank Forte , der über PHP 7 spricht.
Auf der anderen Seite können Sie einen Trick verwenden, anstatt Fehler mit einem Versuch / Fang abzufangen: Verwenden Sie include.
Hier drei Codeteile:
Datei: tst1.php
Wenn Sie dies in PHP 7 ausführen, wird nichts angezeigt.
Versuchen Sie Folgendes:
Datei: tst2.php
Datei: tst3.php
Führen Sie nun tst2 aus, wodurch die Fehlerberichterstattung festgelegt wird, und schließen Sie dann tst3 ein. Du wirst sehen:
quelle
Sie können Folgendes tun:
Stellen Sie die folgenden Parameter in Ihrer Hauptindexdatei ein:
Dann können Sie basierend auf Ihren Anforderungen auswählen, welche Sie anzeigen möchten:
Für alle Fehler, Warnungen und Hinweise:
Für alle Fehler:
Für alle Warnungen:
Für alle Hinweise:
Weitere Informationen finden Sie hier .
quelle
index.html
?Sie können Ihren eigenen benutzerdefinierten Fehlerbehandler hinzufügen, der zusätzliche Debuginformationen bereitstellt. Darüber hinaus können Sie es so einrichten, dass Sie die Informationen per E-Mail erhalten.
quelle
Dieser Code sollte funktionieren:
Versuchen Sie jedoch, den Code auf dem Telefon in der Datei zu bearbeiten:
quelle
Die beste / einfachste / schnellste Lösung, die Sie verwenden können, wenn es sich um ein schnelles Debugging handelt, besteht darin, Ihren Code mit abfangenden Ausnahmen zu umgeben. Das ist es, was ich mache, wenn ich etwas schnell in der Produktion überprüfen möchte.
quelle
catch (Throwable $e)
ist besser ... oder ein anderer Fangblock daruntercatch(Error $e)
Einfach schreiben:
quelle
Das habe ich gelernt. In der PHP.INI-Datei
quelle
Während Ihre Site aktiv ist, sollte in der
php.ini
Datei aus Sicherheitsgründen display_errors deaktiviert sein. Für die Entwicklungsumgebung können display_errors jedoch zur Fehlerbehebung aktiviert werden.quelle
Sie können dies tun, indem Sie die Datei php.ini ändern und Folgendes hinzufügen
ODER Sie können auch den folgenden Code verwenden, da dies bei mir immer funktioniert
quelle
Wenn Sie Xdebug installiert haben, können Sie jede Einstellung überschreiben, indem Sie Folgendes festlegen :
quelle
Möglicherweise möchten Sie diesen Code verwenden:
quelle
Alle Fehler außer E_NOTICE melden
Alle PHP-Fehler anzeigen
Deaktivieren Sie alle Fehlerberichte
quelle
In Unix CLI ist es sehr praktisch, nur Fehler in eine Datei umzuleiten :
Dann aus einer anderen Shell für Live-Änderungen:
oder einfach
quelle
./script
ist ein PHP-CLI-Skript (Hashbang#!/usr/bin/php
). Sie können die PHP-Fehler in einer Datei auf diese Weise umleiten. Dies ist eine Unix-Rohrleitung. Dies ist nicht PHP als CGI.Wenn es auf der Kommandozeile ist, können Sie laufen
php
mit-ddisplay_errors=1
zu überschreiben die Einstellung inphp.ini
:quelle
Anders als die
php.ini
undini_set()
Funktionen in einem PHP - Skript, können Sie dieses gleiche tun mit.htaccess
undhttpd.conf
Richtlinien unten.Einige Hosting-Anbieter erlauben das Festlegen von PHP-Einstellungen über
.htaccess
undhttpd.conf
.PHP-Fehler ausblenden
fand diese Antwort durch ein wenig googeln
quelle