Wer kümmert sich um PHP?

Liebe ExpertInnen,

das Backup-Tool Akeeba arbeitet korrekt, wenn die Datenbank beim Hoster unter PHP 8.0 läuft. Ist hingegen PHP 8.1 festgelegt, scheppert’s. (Gibt noch mehr Software, wo das passiert). Der Autor von Akeeba sagt, die Fehlermeldung käme gar nicht aus Akeeba, sondern vom DBMS des Hosters. Das lässt mich doch stark vermuten, dass hier im PHP etwas nicht so tut wie es soll.

Es ist nicht meine Absicht, hier etwas zu reparieren, mir langte schon, wenn ich wüsste, wo man solche Fehler meldet.

Dank & Gruß
Ralf

Hallo Ralf,

komm auch du, greif zu!
https://www.php.net/get-involved

Direkt Fehler melden kannst du hier: https://github.com/php/php-src/issues/
Vielleicht suchst du aber auch vorher dort, möglicherweise ist der Fehler bereits bekannt?

Gruß
Christa

Was ist denn die Fehlemeldung. Ich halte es doch für sehr unwahrscheinlich, dass PHP hier das Problem ist. Es ist viel wahrscheinlihcer, dass die Anwendung einen Bug hat.

1 Like

Moin,

dass die Anwendung einen Bug hat.

nur unter PHP 8.1? Komisch…

Hier die Meldung (hab’s vergessen):„akeeba Unable to connect to the Database: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

DIe Sache betrifft das Zusammenspiel von Akeeba Backup, Akeeba Kickstart und dem DBMS. Laut Auskunft des Autors von Kickstart müssen die PHP-Versionen dieser 3 Komponenten irgendwie zusammenpassen (irgendwie nicht näher beschrieben). *)

Rezept: Alles wegschmeißen, Backup neu erstellen, diesen mit der neuesten Version von Kickstart einpielen, und schon geht’s. Was da im Detail abläuft, weiß keiner wirklich, ebenso wenig, was „SUPER privilege(s)“ sind.

*) Das kann natürlich zum Problem werden, wenn zwischen Backup erstellen und zurücksichern eine längere Zeit vergeht.

Gruß
Ralf

Das ist aber keine PHP-Meldung. Das ist ne MySQL-Meldung. Da fehlt eine Datenbankberechtigung. Das steht doch alles da. Kann nicht mit der Datenbank verbinden, weil Zugriff verweigert. Wieso sieht der Hersteller der Software das nicht?

MySQL hat mit Version 8.0.21 da was geändert. Zumindest für mysqldump gilt das jetzt.

mysqldump requires at least the SELECT privilege for dumped tables, SHOW VIEW for dumped views, TRIGGER for dumped triggers, LOCK TABLES if the --single-transaction option is not used, and (as of MySQL 8.0.21) PROCESS if the --no-tablespaces option is not used. Certain options might require other privileges as noted in the option descriptions.

Das muss mit dir nichts zu tun haben. Aber es zeigt, dass sich MySQL einen Dreck um semantische Versionierung kümmert und sowas auch mal zwischendrin verschärft.

Aber nochmal: Das müsste dem Autor von Kickstart aber auch sofort anhand der Fehlermeldung ersichtlich sein.

Klar weiß man das. https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html

Ok, das leuchtet ein. Aber warum tritt dann der Fehler nur auf, wenn der Webserver mit PHP 8.1 läuft, nicht bei 8.0? Der MySQL-Server, der die DB-Privilegien verwaltet, sollte doch von der verwendeten PHP-Version unabhängig sein.

Ist das sicher, dass auf dem Webserver mit 8.0 keine ältere MySQL-Version läuft? Und was natürlich sein kann ist, dass bei 8.1 Fehler in der Datenbankverbindung als Error angezeigt werden und in 8.0 nur als Warnung. Das kommt ein bisschen auf den Treiber an.

Bei PDO gab es da mal ne Änderung am default-Wert aber das war schon in 8.0
https://www.php.net/manual/en/pdo.error-handling.php

Es könnte auch sein, dass die Berechtigung schon immer fehlt, das aber nicht dem user gezeigt wurde. Das sind alles Spekulationen, nichts davon ist ein PHP-Problem.

Im Übrigen ist es ein echt schlechtes Zeichen, wenn eine Backup-Anwendung mehr Rechte auf der Datenbank haben will als SHOW_TABLES und SELECT und vielleicht noch ein paar andere lesende Rechte. Warum sollte ein Backup SUPER Privilegien brauchen? Das spricht eindeutig nicht für diese Backupsoftware und wäre für mich ein red flag. Ein Fehler in dieser Anwendung kann dir die komplette Datenbank löschen oder im Internet exponieren. Wozu??

1 Like