Closed benjaminstocker closed 7 months ago
Der Contao Manager hat eine Liste von Pfaden (https://github.com/contao/contao-manager/blob/main/api/System/ServerInfo.php#L27) welche mittels PhpExecutableFinder
durchsucht werden.
Verstehe ich richtig dass du den Server selber betreibst? Oder geht es um ein Hoster-Problem?
Oder ist es tatsächlich ein Problem, dass PHP-FPM und PHP_CLI nicht exakt dieselbe Version liefern?
Der Manager würde eine Binary mit anderer Patch-Version (z.B. PHP 8.1.17 im Web, 8.1.15 auf CLI) nehmen, wenn nichts besseres gefunden wird. Als Notfall-Fallback-Lösung. Daher kann das kaum das Problem sein.
Du kannst die Binary selber testen, indem du die Manager-Befehle ausführst:
Details über den Contao Manager und den Server:
/usr/bin/php /path/to/web/contao-manager.phar.php about
Test-Befehl, welcher vom Manager selber verwendet wird um die Binary zu überprüfen:
/usr/bin/php /path/to/web/contao-manager.phar.php test
Das Problem könnte auch sein, dass deine Binary auf CLI irgendwelche Warnungen ausgibt, und daher die test
-Ausgabe nicht gelesen werden kann. Aber das solltest du sehen wenn du den Befehl ausführst.
Hallo aschenpp, vielen Dank für Deine detaillierte Antwort.
Ja, es ist ein eigener Server, er gehört einem Contao-Kunden. Zuvor lief mehrere Jahre eine Contao Seite mit Ubuntu Linux und PHP 7.4 einwandfrei. Auch das neue Aufsetzen der Seite klappt hier (Testumgebung). Wird exakt dieselbe Apache/PHP Konfiguration auf einen neuen Server mit PHP 8.1 übernommen, erscheint die besagte Fehlermeldung.
Die Liste mit den Pfaden habe ich kontrolliert, das Binary ist dort enthalten.
contao-manager.phar.php about liefert folgendes:
------------------ ------------------------------------------------------------------------------------------------
Contao Manager
------------------ ------------------------------------------------------------------------------------------------
Version 1.6.5
Environment prod
Debug false
Cache directory phar:///var/webs/test/contao/web/contao-manager.phar.php/api/Resources/cache
Contao directory /var/webs/test/contao/web
Data directory /var/webs/test/contao/web/contao-manager
------------------ ------------------------------------------------------------------------------------------------
PHP
------------------ ------------------------------------------------------------------------------------------------
Version 8.1.13
Architecture 64 bits
Server API cli
Intl locale en_US_POSIX
Timezone UTC
Binary Path /usr/bin/php8.1
------------------ ------------------------------------------------------------------------------------------------
Server
------------------ ------------------------------------------------------------------------------------------------
Operating System Linux (5.15.0-58-generic)
Architecture x86_64
------------------ ------------------------------------------------------------------------------------------------
Und contao-manager.phar.php test folgendes:
{"version":"8.1.13","version_id":80113,"sapi":"cli"}
Und hier noch die Outputs auf dem PHP 7.4 Server:
------------------ ------------------------------------------------------------------------------------------------
Contao Manager
------------------ ------------------------------------------------------------------------------------------------
Version 1.6.5
Environment prod
Debug false
Cache directory phar:///var/webs/test/contao/web/contao-manager.phar.php/api/Resources/cache
Contao directory /var/webs/test/contao/web
Data directory /var/webs/test/contao/web/contao-manager
------------------ ------------------------------------------------------------------------------------------------
PHP
------------------ ------------------------------------------------------------------------------------------------
Version 7.4.20
Architecture 64 bits
Server API cli
Intl locale en_US_POSIX
Timezone UTC
Binary Path /usr/bin/php7.4
------------------ ------------------------------------------------------------------------------------------------
Server
------------------ ------------------------------------------------------------------------------------------------
Operating System Linux (5.4.0-149-generic)
Architecture x86_64
------------------ ------------------------------------------------------------------------------------------------
test: {"version":"7.4.20","version_id":70420,"sapi":"cli"}
Vielen Dank für jede Hilfe.
hmm, das sieht eigentlich alles gut aus. Kann es sein dass du für den Webprozess ein chroot jail
oder ähnliches verwendest, und dort die Binary fehlt?
Nein, auch kein jailroot. Wenn ich mit genau denselben Rechten des Webusers eine PHP Shell (!) ausführe, kann ich die PHP Binaries problemlos ausführen:
php-shell> /usr/bin/php -v PHP 8.1.13 (cli) ...
und wenn du als Webuser eine PHP Shell ausführst und dort das test
Command des Managers ausführst, welche Ausgabe bekommst du? Es darf NUR das JSON kommen, keine PHP-Warnungen oder ähnliches.
Das hier wird angezeigt, PHP Fehler werden keine gemeldet:
wwwuser@hosting:…/contao/web# php contao-manager.phar.php test {"version":"8.1.13","version_id":80113,"sapi":"cli"}
wie hast du diesen Befehl ausgeführt? Ich könnte mir nur noch erklären dass es einen Zusammenhang mit proc_open
bzw. der Symfony Process-Komponente hat, aber ich weiss nicht wie leicht du das testen kannst?
PHP Funktionen sind keine gesperrt, auch popen() kann aufgerufen werden. Den Befehl habe ich mit einer simplen PHP Shell ausgeführt, die mit demselben User ausgeführt wird wie der Contao Manager. Auch im selben Ordner mit derselben PHP Konf.
konntest du das Problem mittlerweile lösen?
Leider nein. Ich habe das Problem gelöst, indem ich die Seite an einen externen Hoster übergeben habe. Vielen Dank für Deine Unterstützung.
Ich schliesse das mal Mangels weiteren Informationen.
Hallo,
Das hier ist die Konfiguration: Ubuntu Linux 22.04.1 LTS, Apache/2.4.54, PHP 8.1 FPM Beim Aufruf des Contao Managers erscheint die im Betreff angegebene Fehlermeldung. Der Web Prozess kann aber folgende Kommandos aufrufen: /usr/bin/php, /usr/bin/php8.1:
php-shell> /usr/bin/php -v PHP 8.1.13 (cli) ...
Kann mir jemand sagen, wie genau Contao das Binary prüft? Offenbar schaut es nicht nur nach, ob das angebene Binary existiert und auch ausführbar ist. Oder ist es tatsächlich ein Problem, dass PHP-FPM und PHP_CLI nicht exakt dieselbe Version liefern?
Nachtrag: Der Fehler entstand nach einer Migration von PHP/FPM 7.4.20 (Ubuntu 20.04.2 LTS, Apache/2.4.48.(Ubuntu). Mit exakt derselben Konfiguration lässt sich dort Contao installieren, der Contao Manager erkennt "/usr/bin/php" als gültiges PHP Binary.
Vielen Dank und Gruss