contao / contao-manager

Contao Manager
GNU Lesser General Public License v3.0
83 stars 33 forks source link

"Es wurde kein valides PHP-Programm auf dem Server gefunden." #781

Closed benjaminstocker closed 7 months ago

benjaminstocker commented 11 months ago

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

aschempp commented 10 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.

benjaminstocker commented 10 months ago

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.

aschempp commented 10 months ago

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?

benjaminstocker commented 10 months ago

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) ...

aschempp commented 10 months ago

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.

benjaminstocker commented 10 months ago

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"}

aschempp commented 10 months ago

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?

benjaminstocker commented 10 months ago

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.

aschempp commented 9 months ago

konntest du das Problem mittlerweile lösen?

benjaminstocker commented 8 months ago

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.

aschempp commented 7 months ago

Ich schliesse das mal Mangels weiteren Informationen.