Lesefehler db.sql bei Ersteinrichtung

Hast du Probleme Admidio einzurichten? Hier kannst du Fragen rund um die Einrichtung stellen.
Antworten
erhard
Beiträge: 4
Registriert: 2. Mai 2023, 12:54

Lesefehler db.sql bei Ersteinrichtung

Beitrag von erhard »

Hallo,

ich wollte eine Probeinstallation von Admidio auf einen Webserver (Udmedia) erstellen.
Admidio 4.2.5 , PHP 8.2.5, MySql 8.0
Bekomme aber nach Eingabe der Basis-Daten und Eingabe Butten 'Admidio installieren' folgende Fehlermeldung:

"Bei der Verarbeitung der Daten ist folgendes Problem aufgetreten.
Die Datei /var/www/....../html/admidio/adm_program/installation/db_scripts/db.sql konnte nicht geöffnet werden."

Die Log- Datei enthält:
[2023-04-29 20:45:01.106642] Admidio.WARNING: PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'usr_..._.adm_organizations' doesn't exist
{"file":"/var/www/...../html/admidio/adm_program/system/classes/Database.php","line":710,"class":"Database","callType":"->","function":"queryPrepared"}

Ich hoffe, es kann mir jemand helfen.
Erhard
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Re: Lesefehler db.sql bei Ersteinrichtung

Beitrag von fasse »

Sollte die vermisste Datei in den Ordner tatsächlich vorhanden sein, so hört sich die Fehlermeldung so an, als hätte der PHP-User keine Rechte auf die Datei zu zugreifen.

Sind in den Ordner irgendwelche Rechte anders gesetzt worden?
erhard
Beiträge: 4
Registriert: 2. Mai 2023, 12:54

Re: Lesefehler db.sql bei Ersteinrichtung

Beitrag von erhard »

Danke für die Antwort.

Der htlm-Ordner hat die Rechte 0750, alle weiteren Ordner haben dann 0755.
Die Ordner var, www usw. kann ich nicht einsehen.
Die Datei db.sql hat 0644.

Ich habe mal in einer Probeseite einen direkten php-Aufruf erstellt:
$data = file_get_contents('/var/www/.../html/admidio/adm_program/installation/db_scripts/db.sql', FALSE, NULL, 100, 500);
if ($data === false) {
echo "<h3>Lesefehler File</h3>";
};
var_dump($data);

Hier bekomme ich keinen Lesefehler, die ausgewählten Daten werden korrekt ausgegeben.
Was könnte ich weiter versuchen, um den Fehler zu finden?
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Re: Lesefehler db.sql bei Ersteinrichtung

Beitrag von fasse »

Hallo erhard,

mir ist es leider nicht klar, wieso diese Datei nicht gelesen werden kann. Es muss etwas mit deiner Installation/ Konfiguration des Servers zu tun haben.

Die Rechte 644 für die db.sql sieht aus meiner Sicht für eine rein lesende Datei erst einmal gut aus.

Gruß
Fasse
erhard
Beiträge: 4
Registriert: 2. Mai 2023, 12:54

Re: Lesefehler db.sql bei Ersteinrichtung

Beitrag von erhard »

Hallo fasse,

ich habe zwischenzeitlich den Fehler eingrenzen können.
der PHP-Aufruf 'is_executable' liefert bei meinem Webserver immer 'false' , egal welchen Pfad oder welche Datei ich prüfe.

Deshalb habe ich in der Funktion 'FileSystemUtils::readFile()' die Abfrage 'is_executable' raus genommen.
Damit konnte ich Admidio dann komplett installieren.

Für die Datei 'db.sql' ist solch eine Abfrage ja irrelevant, da nicht die Datei ausgeführt wird, sondern nur einzelne Anweisungen aus der Datei.
Auch an anderern Stellen, wo readFile() aufgerufen wird, geht es nur ums Lesen der SQL-Statements.

Im Code gibt es aber noch mehr Aufrufe von 'is_executable' , wo ich nichts gemacht habe. Hier wird es sicherlich noch zu Problemen führen.

Ich frage mich, warum die Funktion 'is_executable' bei mir nicht funktioniert.
Anmerkung : bei mir ist PHP 8.0.28 im Einsatz.

Gruß
Erhard
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Re: Lesefehler db.sql bei Ersteinrichtung

Beitrag von fasse »

Hallo Erhard,

vielen Dank für den Hinweis. Ich schaue mir das auch noch einmal genauer an, was es mit is_executable auf sich hat.

Viele Grüße
Fasse
erhard
Beiträge: 4
Registriert: 2. Mai 2023, 12:54

Re: Lesefehler db.sql bei Ersteinrichtung

Beitrag von erhard »

Hallo fasse,

ich habe wegen des Problems bei meinem Provider nachgefragt.
Herausgekommen ist, dass die Einstellung der 'exec_dir' Direktive dieses Verhalten erzeugt. Diese ist zur Sicherheit auf /var/www/exec gesetzt. Die Funktion is_executable() beachtet diesen Pfad und ist somit hierdrauf beschränkt.
Standardmässig sind aber alle Unterverzeichnisse ab /html auf 755 gesetzt, sodaß alle Dateien ohne Probleme gelesen werden können.

Meiner Meinung nach ist die Abfrage is_executable() in admidio nicht erforderlich, da die Dateien nur gelesen werden. Falls dies mal irgendwo nicht funktionieren sollte, wird sowieso eine Fehlermeldung erzeugt.
Deshalb meine Frage, gibt es die Möglichkeit, die Abfragen is_executable() in einer der nächsten Versionen raus zu nehmen?
Bis dahin werde ich die Stellen wohl selber auskommentieren müssen.

Ich habe beispielsweise mal Joomla durchsucht, und dort keinen solchen Aufruf gefunden.

Viele Grüße
Erhard
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Re: Lesefehler db.sql bei Ersteinrichtung

Beitrag von fasse »

Hallo Erhard,

Ich schau mir das mal genauer an. Aktuell ist mir hier auch nicht klar, warum auf ausführbar geprüft wird. Den Code hat jemand anders mal geschrieben.

Viele Grüße
Fasse
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Re: Lesefehler db.sql bei Ersteinrichtung

Beitrag von fasse »

Hallo Erhard,

ich hab mir die Thematik angeschaut und festgestellt, dass wir auch beim Lesen von Dateien prüfen, ob der Ordner ausführbar ist. Das ist nicht nötig und in der kommenden Version behoben.
https://github.com/Admidio/admidio/issues/1419

An den anderen Stellen an denen wir die Ausführbarkeit von Ordnern / Dateien prüfen, ist es allerdings sinnvoll, da dort Dinge gemacht werden, für die man die entsprechenden Rechte braucht. Z.B. Ordner/Dateien verschieben, anlegen. Unix-Systeme brauchen für diese Operationen genau das Recht.

Viele Grüße
Fasse
Antworten