Wie erhalte ich nützliche Fehlermeldungen in PHP?

Lesezeit: 5 Minuten

1647089050 47 Wie erhalte ich nutzliche Fehlermeldungen in PHP
Candidasa

Ziemlich oft versuche ich, ein PHP-Skript auszuführen und bekomme nur einen leeren Bildschirm zurück. Keine Fehlermeldung; nur ein leerer Bildschirm. Die Ursache könnte ein einfacher Syntaxfehler (falsche Klammer, fehlendes Semikolon) oder ein fehlgeschlagener Funktionsaufruf oder etwas ganz anderes gewesen sein.

Es ist sehr schwierig herauszufinden, was schief gelaufen ist. Am Ende kommentiere ich Code aus, füge überall “Echo” -Anweisungen ein usw. und versuche, das Problem einzugrenzen. Aber es muss sicher einen besseren Weg geben, oder?

Gibt es eine Möglichkeit, PHP dazu zu bringen, eine nützliche Fehlermeldung zu erzeugen, wie es Java tut?

  • codierung.smashingmagazine.com/2011/11/30/…

    – Alex

    15. Juli 2012 um 14:54 Uhr

  • @JuannStrauss, das ist untertrieben. Und wenn du endlich siehe die Fehler, heißt es T_PAAMAYIM_NEKUDOTAYIM. Oder vielleicht “muss eine Instanz von Integer sein, Integer gegeben”.

    – Schrittmacher

    3. April 2015 um 20:02 Uhr


  • Tutorium dazu: code2real.blogspot.com/2015/06/…

    – Schüler

    9. September 2015 um 7:21 Uhr


  • Wenn Sie einen Parsing-Fehler haben, funktioniert keiner davon auf vielen Webhosts, und Sie haben möglicherweise keinen Zugriff auf die Fehlerprotokolle. Sie müssen PHP auf Ihrem lokalen Computer (XAMPP unter Windows usw.) installieren und eine Befehlszeilen-Synax-Prüfung durchführen php.exe -l <your file name>

    – Matthäus Lock

    17. August 2021 um 10:32 Uhr

1647089051 392 Wie erhalte ich nutzliche Fehlermeldungen in PHP
Eljakim

Folgendes aktiviert alle Fehler:

ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);

Siehe auch die folgenden Links

  • Am besten nehmen Sie diese Änderungen auf der Ebene der .ini-Datei vor. Das Aktivieren der Fehlerberichterstattung innerhalb eines Skripts ist nutzlos, da es bei Syntaxfehlern oder anderen schwerwiegenden Fehlern, die die Kompilierphase beenden, nicht hilft. Das Skript wird beendet, lange bevor es mit der Ausführung beginnt und die Berichtsüberschreibungen erreicht.

    – Markus B

    4. Juli 2011 um 19:49 Uhr

  • Sie haben in der Tat recht. Mir ist nicht aufgefallen, dass der Umzug auf den eigenen Server erfolgt.

    – Eljakim

    4. Juli 2011 um 19:51 Uhr

  • Führen Sie phpinfo() aus, um die richtige php.ini-Datei zu finden. Suche nach Geladene Konfigurationsdatei Linie.

    – langweilig

    5. Juli 2011 um 8:01 Uhr

  • Wenn Sie nach Fehlern suchen, die während der Kompilierphase auftreten, überprüfen Sie Ihre Apache-Protokolle, die sich häufig unter /var/log/apache2/error.log befinden

    – csi

    21. Februar 2014 um 22:08 Uhr

  • Diese Antwort schlägt auf PHP7 fehl, wenn die strikte Typisierung aktiviert ist, da der zweite Parameter von ini_set ist eine Zeichenfolge.

    – PeeHaa

    4. September 2015 um 18:16 Uhr

  • Ich erhalte eine leere Seite von diesem Code. Was meinen Sie mit “Sie haben einen Fehler im Shutdown-Handler” und was soll ich tun, um das Problem zu lösen?

    – Paolo M

    24. September 2014 um 23:08 Uhr

  • @PaoloM, er sagt einen Fehler in der Funktion ShutdownHandler Oben. Im Grunde ist dies ein Stopgap-Hack anstelle einer ordnungsgemäßen Fehlerbehandlung.

    – Schrittmacher

    14. Oktober 2014 um 9:33 Uhr

  • Danke, war nützlich, aber wie kann ich deaktivieren E_NOTICE Fehler in dieser Funktion?

    – MajAfy

    4. April 2015 um 8:45 Uhr

  • Dies ist die richtige Lösung, aber seien Sie vorsichtig mit der Offenlegung von Informationen, wenn ein Fehler auftritt … (bevorzugen Sie die Protokollierung, anstatt sie an die Benutzer weiterzugeben).

    – Sam Jason Braddock

    29. August 2016 um 14:13 Uhr

  • Ich verwende dies, wenn Symfony fatale Fehler nicht richtig abfangen kann.

    – Spule

    22. September 2016 um 10:19 Uhr

Sie können die folgenden Zeilen in die Datei einfügen, die Sie debuggen möchten:

error_reporting(E_ALL);
ini_set('display_errors', '1');

Dies überschreibt die Standardeinstellungen in php.ini, die PHP lediglich veranlassen, die Fehler an das Protokoll zu melden.

  • Das ist richtig. In diesem Fall müssen die Werte direkt in der ini gesetzt werden — für eine reine Entwicklungsumgebung ist das vielleicht ohnehin vorzuziehen.

    – Tomalak

    10. Mai 2009 um 10:00 Uhr

1647089051 806 Wie erhalte ich nutzliche Fehlermeldungen in PHP
Jens

Fehler und Warnungen erscheinen normalerweise in ....\logs\php_error.log oder ....\logs\apache_error.log abhängig von Ihren php.ini-Einstellungen.

Auch nützliche Fehler werden oft an den Browser weitergeleitet, aber da es sich nicht um gültiges HTML handelt, werden sie nicht angezeigt.

Damit "tail -f” Ihre Protokolldateien und wenn Sie einen leeren Bildschirm erhalten, verwenden Sie die Menüoptionen “Ansicht” -> “Quelle” von IEs, um die Rohausgabe anzuzeigen.

  • Das ist richtig. In diesem Fall müssen die Werte direkt in der ini gesetzt werden — für eine reine Entwicklungsumgebung ist das vielleicht ohnehin vorzuziehen.

    – Tomalak

    10. Mai 2009 um 10:00 Uhr

1647089051 646 Wie erhalte ich nutzliche Fehlermeldungen in PHP
Mario

PHP-Konfiguration

2 Einträge in der php.ini bestimmen die Ausgabe von Fehlern:

  1. display_errors
  2. error_reporting

Im Produktion, display_errors ist normalerweise eingestellt Off (Was auch gut so ist, denn eine Fehleranzeige in Produktionsstätten ist generell nicht erwünscht!).

Allerdings hinein Entwicklungsollte eingestellt werden Ondamit Fehler angezeigt werden. Überprüfen!

error_reporting (ab PHP 5.3) ist standardmäßig auf eingestellt E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED (d.h. es wird alles außer Hinweisen, strengen Standards und Abwertungshinweisen angezeigt). Stellen Sie es im Zweifelsfall auf ein E_ALL anzuzeigen alle Die Fehler. Überprüfen!

Wow wow! Kein Scheck! Ich kann meine php.ini nicht ändern!

Das ist eine Schande. Normalerweise erlauben gemeinsam genutzte Hosts keine Änderung ihrer php.ini-Datei, daher ist diese Option leider nicht verfügbar. Aber keine Angst! Wir haben andere Optionen!

Laufzeitkonfiguration

Im gewünschten Skript können wir die php.ini-Einträge zur Laufzeit ändern! Das heißt, es wird ausgeführt, wenn das Skript ausgeführt wird! Süss!

error_reporting(E_ALL);
ini_set("display_errors", "On");

Diese beiden Zeilen haben den gleichen Effekt wie das Ändern der php.ini-Einträge wie oben! Fantastisch!

Ich erhalte immer noch eine leere Seite/500-Fehler!

Das bedeutet, dass das Skript noch nicht einmal ausgeführt wurde! Das passiert normalerweise, wenn Sie einen Syntaxfehler haben!

Bei Syntaxfehlern kommt das Skript erst gar nicht zur Laufzeit. Es scheitert an Kompilierzeitwas bedeutet, dass es die Werte in php.ini verwendet, was, wenn Sie es nicht geändert hätten, möglicherweise keine Anzeige von Fehlern zulässt.

Fehlerprotokolle

Außerdem protokolliert PHP standardmäßig Fehler. Beim Shared Hosting kann es sich in einem dedizierten Ordner oder im selben Ordner wie das anstößige Skript befinden.

Wenn Sie Zugriff auf die php.ini haben, finden Sie diese unter der error_log Eintrag.

  • Für die Laufzeitkonfiguration können Sie diese Zeilen möglicherweise in eine separate Datei & include die PHP-Datei mit dem Fehler.

    – JustinCB

    8. Dezember 2020 um 22:03 Uhr

993640cookie-checkWie erhalte ich nützliche Fehlermeldungen in PHP?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy