Hilfe bei Fehlersuche in PHP Skript und Datenbank gesucht

OP #7951478
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 ?

Angehängte Dateien:
#7951510
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.

Angehängte Dateien:
: Bearbeitet durch User
OP #7951571
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren