Forum: PC-Programmierung Hilfe bei Fehlersuche in PHP Skript und Datenbank gesucht


von Frank O. (fop)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe nach langer Zeit mal wieder PHP benutzt, in der Hoffnung damit 
ein Problem lösen zu können.

Was soll das Skript machen :
Um eine Verbindung zu testen, ruft ein ESP32 zyklisch die URL des 
Skripts auf. Das Skript läuft dann bei einem Hoster. Es soll einfach in 
einer Datenbank eintragen, wann Aufrufe kamen und wann nicht. In der 
Verwaltungsoberfläche des Hosters ist PHP Version 8.3 eingestellt.

Was macht das Skript :
Total versagen. Wenn ich die URL mit meinem Browser aufrufe bekomme ich 
einen http Code 500.

Wollte hier nicht ein komplettes LAMP System installieren, um mal eine 
vernünftige Fehlermeldung zu Gesicht zu bekommen.

Sieht von Euch schon jemand Fehler im Skript ?

von Ein T. (ein_typ)


Angehängte Dateien:

Lesenswert?

Frank O. schrieb:
> Wollte hier nicht ein komplettes LAMP System installieren, um mal eine
> vernünftige Fehlermeldung zu Gesicht zu bekommen.

Docker to the rescue, siehe Anhänge. Beide Skripte kommen ins 
Unterverzeichnis data/ des Ordners, in dem das Dockerfile und die 
compose.yml liegen. Dann in diesem Verzeichnis
1
docker compose build
2
docker compose up

ausführen, und nach kurzer Zeit sollte alles laufen. Hier jetzt mit PHP 
8.4 (siehe PHP_VERSION im Dockerfile), das kannst Du einstellen wie Du 
magst.

> Sieht von Euch schon jemand Fehler im Skript ?
1
cms-1  | [Wed Oct 15 09:46:39.648802 2025] [php:error] [pid 7:tid 7] [client 172.18.0.1:41148] PHP Fatal error:  Uncaught Error: Undefined constant PDO::MYSQL_ATTR_INIT_COMMAND in /var/www/localhost/htdocs/uptimes.php:6\nStack trace:\n#0 {main}\n  thrown in /var/www/localhost/htdocs/uptimes.php on line 6
2
cms-1  | 172.18.0.1 - - [15/Oct/2025:09:46:39 +0000] "GET /uptimes.php HTTP/1.1" 500 - "-" "curl/8.5.0"

Anscheinend ist "PDO::MYSQL_ATTR_INIT_COMMAND" unbekannt.

Nebenbei bemerkt schreibst Du "Es soll einfach in einer Datenbank 
eintragen, wann Aufrufe kamen und wann nicht". Verzeihung, aber wenn 
dort keine Aufrufe ankommen, kann das Skript natürlich auch nichts in 
die DB schreiben.

: Bearbeitet durch User
von Frank D. (Firma: LAPD) (frank_s634)


Lesenswert?

Frank O. schrieb:
> Wollte hier nicht ein komplettes LAMP System installieren, um mal eine
> vernünftige Fehlermeldung zu Gesicht zu bekommen.
https://www.php.net/manual/en/function.error-reporting.php

von Frank O. (fop)


Lesenswert?

Ich habe den Fehler jetzt gefunden. Er versteckt sich in Zeile 62. Da 
der Code um verschiedenen Fragmente und Beispiele ergänzt wurde, ist 
dort der ursprüngliche Objektname vergessen gegangen.

Und ja, es war natürlich falsch ausgedrückt, dass das Skript die Zeiten 
protokollieren kann, in denen es nicht aufgerufen wird. Es protokolliert 
die Zeiten, in denen es aufgerufen wird. Die weitere Auswertung muss 
zwischen den Ohren erfolgen.

Danke für die Tipps. Der Versuch mit dem try/catch hat hier ja gar 
nichts gebracht. Habe ausgehend von Euren Links gestöbert und 
set_error_handler() entdeckt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.