PHP Fehlermeldungen

[Bildschirmfoto] Vermeidung von PHP-Fehlermeldungen

 

 

Die Fehlermeldungen des PHP-Interpreters sind allgemein einer der nachfolgenden Kategorien zugeordnet:

➤ Mit Beginn von PHP 8 werden die Fehlermeldungen genauer, oft wird mitgeteilt welcher Fehler gemacht wurde.

Syntaxfehler (Parse Error)

Während der syntaktischen Analyse des Skriptes (englisch: parsing) wurde ein Fehler im Skript gefunden wie etwa ein fehlendes Semikolon am Ende einer Anweisung oder eine falsch gesetzte Klammer. Der Quellcode entspricht also nicht der erlaubten Grammatik (der Programmiersprache). Bei einem Syntaxfehler bricht der Interpreter die Verarbeitung des Programms ab.

Parse error: syntax error, unexpected ...
Das bedeutet meist das man ein Zeichen (z. B.: den Strichpunkt ;) vergessen hat.

Parse error: syntax error, unexpected T-STRING ...
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING ...
Bei solchen Fehlermeldungen sind meistens die Grenzen der Zeichenketten (Anführungszeichen) falsch oder nicht gesetzt.

Parse error: syntax error, unexpected $end in ...
Ein unerwartetes $end (steht für Ende des Programms), tritt beispielsweise auf, wenn eine (geschweifte) Klammer zu viel oder zu wenig notiert wurde.
Ab PHP 8 lautet diese Fehlermeldung: Parse error: Unclosed '{' on line 3 in ...

Parse error: syntax error, unexpected T_IS_EQUAL, expecting ',' or ')' in ...
Ein Komma-Fehler oder ein Klammer-Fehler wurde gefunden.

Parse error: parser stack overflow in ...
Der Hauptspeicher des Servers ist verbraucht. Haben Sie eine Endlosschleife im Script?

Parse error: syntax error, unexpected T_DOUBLE_ARROW in ...
Verwende bei der Zuweisung eines Arrays => anstelle von >=. Und beim vergleichen von Werten <= statt =< oder >= statt =>.

Parse error: syntax error, unexpected 'use' (T_USE) in ...
Das use-Schlüsselwort muss im äußersten Bereich einer Datei (des globalen Bereichs) oder innerhalb von Namespace-Deklarationen deklariert werden. Dies liegt daran, dass der Import zur Kompilierungszeit und nicht zur Laufzeit erfolgt, sodass er nicht blockiert werden kann.

Warnung (Warning)

Ein warnender Hinweis des Interpreters, dass er auf etwas Zweifelhaftes gestoßen ist. Dies kann beispielsweise ein Funktionsaufruf mit zu wenigen oder zu vielen Parametern sein. Bei Warnungen wird die Verarbeitung nicht unterbrochen; es kann aber zu falschen Ergebnissen kommen.

Warning: Wrong parameter ... for ...
Entweder werden zu viele Parameter oder falsche Parameter an eine Funktion übergeben.

Warning: Undefined variable: test in ...
Warnung tritt auf weil eine Variable ($test) nicht definiert ist.

Warning: Invalid argument supplied for foreach() in ...
Die foreach-Schleife erwartet ein Array.

Warning: Missing argument 2 for foo(), called in ...
Es fehlen ein oder mehrere Parameter bei der Funktionsausgabe.

Warning: date() expects at least 1 parameter, 0 given in ...
Es fehlen ein oder mehrere Parameter bei der Funktionsausgabe date().

Warning: Failed opening 'file.php' for inclusion ...
Tritt bei include() oder require() auf (einbinden einer Datei).
Entweder existiert die Datei nicht, oder die Pfadangabe ("../ordner/file.php") wurde falsch geschrieben. Siehe dazu: » 10 Regeln zu Dateinamen

Warning: Cannot add header information - header was already sent in ...
Aufrufe von header() (oder session_start(), setCookie()) müssen vor allen anderen Ausgaben an den Client (Browser) erfolgen. Es spielt keine Rolle, ob die Ausgabe durch einen HTML-Bereich vor dem Script oder durch das PHP-Script selbst entsteht. Dabei reicht als "HTML-Bereich" z. B. bereits ein einziges Leerzeichen vor dem öffnenden PHP-Tag aus.

Wenn die Datei als Zeichensatz UTF-8 verwendet, so muss im Editor „UTF-8 ohne BOM” ausgewählt werden.

Warning: Cannot send session cookie - headers already sent ...
Tritt bei Sessions auf. Meist liegt es daran das die Session nicht sofort in der ersten Zeile gesendet wurde (siehe vorherigen Absatz).

Warning: fopen("datei.txt","r+") - No such file or directory in ...
Warning: include(datei.php): failed to open stream: No such file or directory in ...
Die Datei, die das Script öffnen sollte, ist unter dem angegebenen Pfad nicht vorhanden.

Warning: ... failed to create stream(~failed to open stream) : Permission denied in ...
Die Datei oder das Verzeichnis besitzt keine Schreib.- und/oder Leserechte.
Siehe dazu: » Chmod - Schreib- und Zugriffsrechte

Warning: mail() has been disabled for security reasons in ...
Eine PHP-Funktion (mail()) wurde (vom Provider) aus Sicherheitsgründen deaktiviert.

Warning: Division by zero in ...
Diese Fehlermeldung ist eine Warnung die dann entsteht wenn PHP eine mathematische Aufgabe ausführen soll die ungültig ist -> zum Beispiel eine Division durch 0.

Warning: Supplied argument is not a valid MySQL result resource in ...
Diese Fehlermeldung kann kommen wenn keine Verbindung zur Datenbank hergestellt werden konnte.

Warning: Unknown error ...
Ein "unbekannter Fehler", dieser Fehler konnte nicht genau bestimmt werden.

Warning: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation 'like' in ...
Die Suche mit LIKE (%foo%) kann nur mit einer einheitlichen Sortierung (entweder utf8_unicode_ci oder utf8mb4_general_ci) in den Spalten der DB-Tabelle durchgeführt werden.

Schwerwiegender Fehler (Fatal Error)

Ein schwerwiegendes Problem wie etwa eine nicht deklarierte Funktion. Bei einem schwerwiegenden Fehler bricht der Interpreter die Verarbeitung des Programms ab.

Fatal error: Call to unsupported/undefined function ... on line ...
Entweder hat man eine selbst-definierte Funktion falsch geschrieben oder man verwendet eine Funktion die nicht (mehr) in der aktuellen PHP Version vorhanden ist oder (in der php.ini-Datei) deaktiviert wurde.

Fatal error: Maximum execution time exceeded
Gibt an das eine MAX Lauf-Zeit verstrichen ist. Das Script benötigt mehr CPU-Zeit, als ihm von der Serverkonfiguration her erlaubt wird. Ursachen: Datei zu groß, von einem anderen Prozess belegt oder schlicht gelocked (blockiert) und nicht wieder freigegeben.

Fatal error: Allowed memory size of **** bytes exhausted (tried to allocate **** bytes) in ...
Die Grenze des maximalen Speicherplatzverbrauch (im Arbeitsspeicher) eines PHP-Scripts wurde überschritten (haben Sie eine Endlosschleife im Programm?).

Fatal error: Cannot break from 1 loop(s) from nesting level 0
Wird eine Schleife in einer bereits mit include() eingeschlossenen PHP-Datei ausgeführt, so darf die Schleife nicht mit dem Befehl break; beendet werden.

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] ...
Die Verbindung zur Datenbank ist fehlgeschlagen. Überprüfen Sie, ob der Host, Benutzername und das Kennwort richtig eingegeben wurden.

Fatal error: Call to a member function prepare() on a non-object in ...
Der PDO-Funktion prepare() wurde kein Objekt (Datenbank-Verbindung) zugewiesen.

Fatal error: Uncaught Error: Call to a member function rowCount() on boolean in ...
Fatal error: Uncaught Error: Call to a member function fetchAll() on boolean in ...
Tritt in Zusammenhang mit einer Datenbank-Tabellen Abfrage auf, die verwendete Anfrage (SQL) ist fehlerhaft!

Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name' in 'field list' in ...
Diese Fehlermeldung ist eindeutig, MySQL enthält einen Fehler und gibt diesen an PHP (die PDOException) weiter.

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; ...
Diese Fehlermeldung ist eindeutig, MySQL enthält einen Fehler und gibt diesen an PHP (die PDOException) weiter.

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in ...
Diese Fehlermeldung tritt bei PDO - Prepare auf, wenn die Anzahl der übergebenen Variablen nicht passt oder fehlerhaft ist.

Hinweis (Notice)

Ein Hinweis oder Ratschlag des Interpreters, der meistens auf einen schlechten Programmierstil hinweist. So etwa wenn Variablen ausgegeben werden ohne ihnen vorher einen Wert zuzuweisen.

Notice: Use of undefined constant ...
Eine unbekannte Konstante wurde aufgerufen. Tritt auch auf wenn in einer Variable die Anführungszeichen vergessen wurden z. B.: $_POST[name] (Richtig wäre: $_POST["name"]).

Notice: Undefined offset: 2 in ...
Diese Meldung tritt meist im Zusammenhang mit der Verwendung von Arrays auf. Wenn ein Index-basierter Zugriff auf ein Array mit einem Index erfolgt, der größer ist, als die Anzahl der Elemente minus 1, dann erscheint diese Fehlermeldung. Mit isset() können Sie zuvor überprüfen ob der Index-Wert existiert.

Notice: A non well formed numeric value encountered in ...
Einen nicht wohlgeformten numerischen Wert angetroffen
Der numerische Wert enthält irgendwelche zusätzlichen Zeichen (Zeilenumbruch, Tabulator, etc.).

Notice: A session had already been started - ignoring session_start() in ...
Eine Session wurde bereits gestartet.

Notice: Undefined index: 13 in ...
Der Index-Wert ist in dem Array nicht vorhanden (z. B.: mit isset($arrayName[13]) überprüfen).

Missbilligt (Deprecated)

Wenn eine PHP-Funktion als missbilligt (engl.: deprecated) gekennzeichnet ist, diese könnte bei der nächsten PHP Version heraus fliegen!

Deprecated: Required parameter $arr follows optional parameter $prio in ...
(PHP 8) Wenn Variablen in eine Funktion übergeben werden, mussen zuerst die erforderlichen Parameter übergeben werden und dann die optionalen Parameter function ($vara, $varb, $varc=5).

Deprecated: Function ereg() is deprecated in ...
Die Funktion ereg() ist seit PHP 5.3.0 veraltet. Sich auf diese Funktion zu verlassen ist in keiner Weise empfehlenswert.
Der Ersatz für ereg() ist » preg_match - PHP Manual.

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in ...
Die PHP MySQL-Funktionen mysql_connect(), mysql_query(), etc. sind als missbilligt eingestuft (seit PHP 5.5.3 und wurden in PHP 7 entfernt). Verwenden Sie PDO (PHP Data Objects) oder mysqli().

Strenge Standards (Strict Standards)

Strict Standards: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in ...
Ab PHP7 wird diese Meldung ausgeben:
Strict Standards: date(): We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in ...
Um die Zeitzone einzustellen verwenden Sie: date_default_timezone_set("Europe/Berlin"); » php.net/manual/de/timezones.europe.php