[3.3] Problem mit "chgrp()" und PHP 8.x

Fragen rund um die Installation, Administration und Benutzung von phpBB.
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
Antworten
Stellanebula
Mitglied
Beiträge: 62
Registriert: 06.09.2022 22:21
Kontaktdaten:

[3.3] Problem mit "chgrp()" und PHP 8.x

Beitrag von Stellanebula »

Hallo ihr Lieben,

mich beschäftigt seit einiger Zeit folgendes Problem: Sobald ich den Server (Web-Space-Paket, Hetzner) von PHP 7.4 auf PHP 8.x umstelle habe ich Probleme mit phpBB3. Egal ob ich von 3.8.8 auf 3.8.9 update, die 3.3.9 oder jetzt auch die 3.3.10 komplett neu installiere, ich bekomme bei der Installation immer die folgende Fehlermeldung:

[ externes Bild ]

Die Datei- und Verzeichnisberechtigungen habe ich sowohl vor der Installation als auch danach) nochmals auf die empfohlenen Werte gesetzt. Dabei auch die Installation / Update sowohl unter PHP 7.4 als auch unter PHP 8.0 und 8.1 durchgeführt - insgesamt habe ich jetzt sicherlich an die zehn bis fünfzehn Installationsversuche durch :-(

Wenn ich mit dem STK-Support-Toolkit auf "Admin-Tools -> Lösche den Cache" gehe kommt noch eine etwas detailliertere Fehlermeldung:

[ externes Bild ]

Sobald ich mittels der Anweisung

Code: Alles auswählen

FcgidWrapper "/home/httpd/cgi-bin/php74-fcgi-starter.fcgi" .php
in der .htaccess auf PHP 7,4 umstelle, ist der ganze Spuk wieder vorbei und alles funktioniert fehlerfrei.

Ich habe hier schon einiges dazu gelesen, bin aber bis auf die Überprüfung der Berechtigungen nicht wirklich schlau draus geworden. Eine ebenfalls versuchte Installation von 3.3.9 unter PHP 8.1 bei einem anderen Anbieter brachte das gleiche Fehlerbild.

Ja, man "muss" sein Forum nicht unbedingt unter PHP 8.1 laufen lassen, und trotzdem wäre es mir recht, wenn es funktionieren würde. Eine Anfrage an meinen Webspace-Provider geht jetzt auch raus, vielleicht liegt es ja an den Server-Einstellungen.
Viele Grüße,
Markus
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17408
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.3] Problem mit "chgrp()" und PHP 8.x

Beitrag von Dr.Death »

Auf Linux Datei Ebene (nicht aus Sicht von phpBB):

Dein WebServer User ist anscheinend nicht in der gleichen Gruppe wie dein FTP User der die Forendateien hochgeladen hat.

Zeile 257 ist:
if (true !== @chgrp($file, $group)) {

Code: Alles auswählen

    /**
     * Change the group of an array of files or directories.
     *
     * @param string|iterable $files     A filename, an array of files, or a \Traversable instance to change group
     * @param string|int      $group     A group name or number
     * @param bool            $recursive Whether change the group recursively or not
     *
     * @throws IOException When the change fails
     */
    public function chgrp($files, $group, $recursive = false)
    {
        foreach ($this->toIterable($files) as $file) {
            if ($recursive && is_dir($file) && !is_link($file)) {
                $this->chgrp(new \FilesystemIterator($file), $group, true);
            }
            if (is_link($file) && \function_exists('lchgrp')) {
                if (true !== @lchgrp($file, $group) || (\defined('HHVM_VERSION') && !posix_getgrnam($group))) {
                    throw new IOException(sprintf('Failed to chgrp file "%s".', $file), 0, null, $file);
                }
            } else {
                if (true !== @chgrp($file, $group)) {
                    throw new IOException(sprintf('Failed to chgrp file "%s".', $file), 0, null, $file);
                }
            }
        }
    }
Stellanebula
Mitglied
Beiträge: 62
Registriert: 06.09.2022 22:21
Kontaktdaten:

Re: [3.3] Problem mit "chgrp()" und PHP 8.x

Beitrag von Stellanebula »

Moin Dr.Death,

vielen Dank für deine Antwort, die ich gut nachvollziehen kann. Nach einem schnellen Test einer neuen Installation, bei der die gepackte Installationsdatei per Web-FTB hochgeladen und direkt per PHP-Script auf dem Server entpackt wurde, ließ sich phpBB3 ohne Fehler installieren. Nur wenn ich die Dateien einzeln auf den Webspace hochschaufel oder per WEB-FTP entpacke, kommt die Fehlermeldung.

Ich bin nicht der Held was PHP und Datei-Rechte angeht. Gibt es einen Weg, z.B. per PHP-Skript, die Eigentümer-Rechte von Ordnern und Dateien zu ändern? Weißt du da etwas Hilfreiches?
Viele Grüße,
Markus
Benutzeravatar
chris1278
Mitglied
Beiträge: 3564
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.3] Problem mit "chgrp()" und PHP 8.x

Beitrag von chris1278 »

Wie lädst du denn die Dateien hoch. Ich würde empfehlen ein Programm wie z.B. Filezilla zu nehmen. Und achte darauf das der Übertragung Modus auf binär eingestellt ist.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17408
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.3] Problem mit "chgrp()" und PHP 8.x

Beitrag von Dr.Death »

Wende Dich an Deinen Hoster.

Der Webserver und Dein FTP Upload User sollten in der gleichen Gruppe sein.
Stellanebula
Mitglied
Beiträge: 62
Registriert: 06.09.2022 22:21
Kontaktdaten:

Re: [3.3] Problem mit "chgrp()" und PHP 8.x

Beitrag von Stellanebula »

@chris1278 : Ich verwende regulär FileZille im binären Modus. Um aber zu testen, ob es Unterschiede in der Rechtevergabe gibt habe ich mich des Hoster-eigenen Web-FTPs bedient.

@Dr.Death: Ein Ticket an meinen Hoster ist schon raus, ich werde berichten wie es weiter geht.
Viele Grüße,
Markus
Bastler711
Mitglied
Beiträge: 29
Registriert: 28.02.2015 23:17

Re: [3.3] Problem mit "chgrp()" und PHP 8.x

Beitrag von Bastler711 »

Hoffentlich darf ich mich hier in den Thread miteinklinken, denn ich habe dasselbe / ein ähnliches Problem.

Die Fehlermeldung mit dem chgrp() kommt bei mir auch, wenn ich auf die PHP Version 8.0 bzw. 8.1 wechsle.
7.4 klappt super.

Ich nutze Filezilla.

Meine anderen Foren habe ich von 3.3.9 auf 3.3.10 aktualisiert.
Auf dem Server läuft PHP Version 7.4.
Alles hat geklappt und es gab keine Fehlermeldung.

Neuinstallation vom Forum Version 3.3.10 in den Hauptordner einer anderen Domain von mir ergab dies:
Mit PHP 7.4 klappt es ohne Fehlermeldung.
Mit PHP 8.0 kommt der oben erwähnte Fehler.
Mit PHP 8.1 kommt der oben erwähnte Fehler.

Vorab danke für die Hilfe.
Stellanebula
Mitglied
Beiträge: 62
Registriert: 06.09.2022 22:21
Kontaktdaten:

Re: [3.3] Problem mit "chgrp()" und PHP 8.x

Beitrag von Stellanebula »

Ich habe jetzt das Problem bei mir darauf zurückgeführt, dass es bei den Berechtigungen der Dateien abhängt, welcher Gruppe diese zugeordnet sind.
Anscheinend hat mein FTP-User eine andere Berechtigung als PHP unter Apache.

Das konnte ich folgendermaßen nachvollziehen:
Habe ich eine ZIP-Datei per FTP auf den Server geladen und dort mit FileZilla entpackt, haben die Dateien die Gruppe "stellapw" erhalten. Der besagte Fehler trat dann unter PHP 8 auf.
Wenn ich die gleiche ZIP-Datei auf dem Server mittels PHP-Script entpacken ließ, wurden den Dateien und Verzeichnissen die Gruppe "users" zugeordnet.

Für ein erfolgreiches Update unter PHP 8 habe ich alle notwendigen Updatedateien auf den Server geladen und dort allen Dateien und Verzeichnissen mittels PHP-Script die Gruppe "users" zugeordnet. Anschließend das Update "/install/app.php...) durchlaufen lassen und es trat kein Fehler bezüglich der Zugriffsrechte mehr auf.

Für alle Interessierte anbei das Script zum Ändern der Berechtigungsgruppe:

Code: Alles auswählen

<?php
$directory = '/pfad/zum/verzeichnis'; // Pfad zum Verzeichnis, dessen Gruppe geändert werden soll
$group = 'users'; // Der neue Gruppenname

// Setze die Gruppe für das Verzeichnis und alle darin enthaltenen Unterordner auf den neuen Wert
if (chgrp($directory, $group) && chmod($directory, 02775)) {
  $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory), RecursiveIteratorIterator::SELF_FIRST);
  foreach($objects as $name => $object){
    chgrp($name, $group);
    chmod($name, 02775);
  }
  echo "Gruppe für $directory und alle darin enthaltenen Unterordner wurde auf $group gesetzt.";
} else {
  echo "Fehler beim Setzen der Gruppe für $directory und alle darin enthaltenen Unterordner.";
}
?>
Viele Grüße,
Markus
Antworten

Zurück zu „Support-Forum“