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 ?
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.