650 Stimmen

Wie kann ich nützliche Fehlermeldungen in PHP erhalten?

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

Es ist sehr schwierig, herauszufinden, was schief gelaufen ist. Am Ende muss ich Code auskommentieren, überall "echo"-Anweisungen eingeben usw., um das Problem einzugrenzen. Aber es muss doch einen besseren Weg geben, oder?

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

1 Stimmen

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

8voto

Code Synthesis Punkte 520

Die beiden wichtigsten Zeilen, die Sie benötigen, um nützliche Fehler aus PHP herauszuholen, sind:

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

Wie bereits in anderen Beiträgen erwähnt, sind diese aus Sicherheitsgründen standardmäßig ausgeschaltet. Als nützlicher Tipp - wenn Sie Ihre Website einrichten, ist es praktisch, einen Schalter für Ihre verschiedenen Umgebungen einzurichten, so dass diese Fehler in Ihrer lokalen und Entwicklungsumgebung standardmäßig eingeschaltet sind. Dies kann mit folgendem Code erreicht werden (idealerweise in Ihrer index.php oder config-Datei, damit dies von Anfang an aktiv ist):

switch($_SERVER['SERVER_NAME'])
{
    // local
    case 'yourdomain.dev':
    // dev
    case 'dev.yourdomain.com':
        ini_set('display_errors',1);
        error_reporting(E_ALL);
    break;
    //live
    case 'yourdomain.com':
        //...
    break;
}

6voto

user577803 Punkte 61

Öffnen Sie Ihre php.ini, vergewissern Sie sich, dass die Einstellung auf:

display_errors = On

Starten Sie Ihren Server neu.

6voto

user1681048 Punkte 71

Vielleicht möchten Sie auch PHPStorm als Code-Editor ausprobieren. Er findet viele PHP- und andere Syntaxfehler schon während der Eingabe im Editor.

6voto

Ashutosh Jha Punkte 151

Wenn Sie ein Ubuntu-Benutzer sind, gehen Sie zu Ihrem Terminal und führen Sie diesen Befehl aus

sudo tail -50f /var/log/apache2/error.log

wo die letzten 50 Fehler angezeigt werden. Es gibt eine Fehlerdatei error.log für apache2, das alle Fehler protokolliert.

5voto

Phil Punkte 140763

Zusätzlich zu all den wunderbaren Antworten hier, möchte ich eine besondere Erwähnung für die MySQLi und PDO Bibliotheken einwerfen.

Um die...

  1. Sie sehen immer datenbankbezogene Fehler, und
  2. Vermeiden Sie die Überprüfung der Rückgabetypen von Methoden, um festzustellen, ob etwas schief gelaufen ist

Die beste Möglichkeit ist, die Bibliotheken so zu konfigurieren, dass Ausnahmen werfen .

MySQLi

Fügen Sie dies am Anfang Ihres Skripts ein

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

Dies wird am besten vor der Verwendung von new mysqli() o mysqli_connect() .

PDO

Stellen Sie die PDO::ATTR_ERRMODE Attribut zu PDO::ERRMODE_EXCEPTION auf Ihrer Verbindungsinstanz. Sie können dies entweder im Konstruktor tun

$pdo = new PDO('driver:host=localhost;...', 'username', 'password', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);

oder nach der Erstellung

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X