Ändern der CLI PHP Version für Domain

Diskussionen zur Bedienung von KeyHelp.
User avatar
Toorms
Posts: 137
Joined: Wed 18. Mar 2020, 20:11

Ändern der CLI PHP Version für Domain

Post by Toorms »

Guten Morgen liebe Gemeinde,

ich nutze unter anderem die Software "InvoiceNinja", welche nun die PHP Version 8.1 in CLI und WEB braucht. Web habe ich schon soweit geändert, wie ändere ich nun aber für die Domain iv.example.com die CLI PHP Version ebenfalls auf Version 8.1 ohne andere Domains zu affektieren?

Image

Falls es das nicht gäbe; Feature Request? :-)

Cheers
Toorms
tab-kh
Posts: 450
Joined: Thu 22. Apr 2021, 23:06

Re: Ändern der CLI PHP Version für Domain

Post by tab-kh »

Wird denn das PHP-CLI überhaupt für andere Dinge als den Cronjob gebraucht? In der Doku sehe ich, dass beim Cronjob der Pfad zum PHP-CLI angegeben wird, das kannst du ja bei Keyhelp auch problemlos tun, mache ich die ganze Zeit so. Da die Software auch für Shared Webhosting geeignet zu sein scheint - wo es eine solche Einstellung pro Domain sowieso nirgends gibt, falls sie überhaupt möglich ist - sollte die Pfadangabe beim Cronjob eigentlich ausreichen!?!
User avatar
Toorms
Posts: 137
Joined: Wed 18. Mar 2020, 20:11

Re: Ändern der CLI PHP Version für Domain

Post by Toorms »

tab-kh wrote: Sat 6. Aug 2022, 11:33 Wird denn das PHP-CLI überhaupt für andere Dinge als den Cronjob gebraucht? In der Doku sehe ich, dass beim Cronjob der Pfad zum PHP-CLI angegeben wird, das kannst du ja bei Keyhelp auch problemlos tun, mache ich die ganze Zeit so. Da die Software auch für Shared Webhosting geeignet zu sein scheint - wo es eine solche Einstellung pro Domain sowieso nirgends gibt, falls sie überhaupt möglich ist - sollte die Pfadangabe beim Cronjob eigentlich ausreichen!?!
Die Cronjobs sind seit gestern schon auf 8.1

Code: Select all

* * * * *       foobar    /opt/keyhelp/php/8.1/bin/php /home/users/foobar/www/office.foobar.de/artisan schedule:run >> /dev/null 2>&1
*/5 * * * *     foobar    /opt/keyhelp/php/8.1/bin/php /home/users/foobar/www/office.foobar.de/artisan queue:work --stop-when-empty >> /dev/null 2>&1
0 * * * *       foobar    /opt/keyhelp/php/8.1/bin/php /home/users/foobar/www/office.foobar.de/artisan optimize >> /dev/null 2>&1
Aber dennoch zeigt die Applikation an, dass CLI auf 7.4 noch steht.
User avatar
24unix
Posts: 1560
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: Ändern der CLI PHP Version für Domain

Post by 24unix »

Toorms wrote: Sat 6. Aug 2022, 11:56 Aber dennoch zeigt die Applikation an, dass CLI auf 7.4 noch steht.
Sie prüft wahrscheinlich das default php, dass muss zwingend in der Version bleiben, die zur Release gehört (Bullseye: 7.4).

Gibt es denn Probleme?
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
tab-kh
Posts: 450
Joined: Thu 22. Apr 2021, 23:06

Re: Ändern der CLI PHP Version für Domain

Post by tab-kh »

24unix wrote: Sat 6. Aug 2022, 13:23
Toorms wrote: Sat 6. Aug 2022, 11:56 Aber dennoch zeigt die Applikation an, dass CLI auf 7.4 noch steht.
Sie prüft wahrscheinlich das default php, dass muss zwingend in der Version bleiben, die zur Release gehört (Bullseye: 7.4).

Gibt es denn Probleme?
Das letzte ist eine gute Frage :D
Das hier lässt tief blicken: https://forum.invoiceninja.com/t/invoic ... xec/10713
Auf die Frage eines Users, wozu InvoiceNinja die exec() Funktion benötigt...
I believe we use exec() to get the php cli version.

Code: Select all

        try {
            exec('php -v', $foo, $exitCode);

            if ($exitCode === 0) {
                return empty($foo[0]) ? 'Found php cli, but no version information' : $foo[0];
            }
        } catch (Exception $e) {
            return false;
        }
Das Ganze basiert ja wohl auf Laravel. Da kenne ich mich nicht aus, vielleicht kann man ja irgendwo den Pfad zur PHP-CLI eingeben. Das würde ich jedenfalls erwarten bei einer Software, die angeblich auch auf Shared Webhostings läuft und zwingend PHP 8.1 sowohl bei Web als auch CLI benötigt. Sofern PHP 8.1 dort überhaupt zur Verfügung steht, wird es wohl kaum die CLI-Version sein, die beim Aufruf von php in der Konsole benutzt wird.
User avatar
Toorms
Posts: 137
Joined: Wed 18. Mar 2020, 20:11

Re: Ändern der CLI PHP Version für Domain

Post by Toorms »

Ich habe nun schon die zweite Anwendung, welche ebenfalls CLI auf 8.x braucht. Gibt es denn da keine Möglichkeiten oder wäre es ein Feature Request wert?
User avatar
mhagge
Community Moderator
Posts: 487
Joined: Wed 8. Aug 2018, 15:19

Re: Ändern der CLI PHP Version für Domain

Post by mhagge »

PHP 8 steht ja auch auf der CLI zur Verfügung - keyhelp-php80 oder keyhelp-php81 (je nachdem und vorausgesetzt, die entsprechende Version wurde über die alternativen PHP-Versionen in Keyhelp installiert)

Als Denkanstoß (ungetestet) Wenn man der Anwendung nicht beibringen kann, das entsprechende Binary als "php" zu nutzen - klappt evtl. ein Shell-Alias? ( https://wiki.ubuntuusers.de/alias/ ) oder ein Symlink (wenn man in der Anwendung den Pfad zu PHP bestimmen kann?)
tab-kh
Posts: 450
Joined: Thu 22. Apr 2021, 23:06

Re: Ändern der CLI PHP Version für Domain

Post by tab-kh »

mhagge wrote: Tue 9. Aug 2022, 15:41 Als Denkanstoß (ungetestet) Wenn man der Anwendung nicht beibringen kann, das entsprechende Binary als "php" zu nutzen - klappt evtl. ein Shell-Alias? ( https://wiki.ubuntuusers.de/alias/ ) oder ein Symlink (wenn man in der Anwendung den Pfad zu PHP bestimmen kann?)
Oder eben doch ein Feature-Request - bei der Anwendung. :mrgreen:
Dort ist die Lösung auch am einfachsten und auch flächendeckend üblich.

Ansonsten stelle man sich mal vor, man hätte zwei solche Backstein-Anwendungen :roll:. Eine braucht PHP 8.0, die andere 8.1 - und beide wollen, dass ihre PHP-CLI Version mit "php" aufrufbar ist. Das ist dann vielleicht ein Fall für Docker. In einem Serverpanel wäre es wahrscheinlich eine Weltneuheit, die Version der PHP-CLI pro Domain einstellen zu können. Zumal PHP-CLI von Domains normalerweise keine Ahnung hat. Woraus bestimmt sich die aktuelle Domain? Aus dem aktuellen Arbeitsverzeichnis? Oder stellt man dann die PHP-CLI Version pro User ein? Dann braucht man halt mindestens einen User pro PHP-Version (pro Kunde).
User avatar
Toorms
Posts: 137
Joined: Wed 18. Mar 2020, 20:11

Re: Ändern der CLI PHP Version für Domain

Post by Toorms »

mhagge wrote: Tue 9. Aug 2022, 15:41 Als Denkanstoß (ungetestet) Wenn man der Anwendung nicht beibringen kann, das entsprechende Binary als "php" zu nutzen - klappt evtl. ein Shell-Alias? ( https://wiki.ubuntuusers.de/alias/ ) oder ein Symlink (wenn man in der Anwendung den Pfad zu PHP bestimmen kann?)
Ein Alias unter /home/user/foobar/.bashrc mit dem folgenden

Code: Select all

alias php='keyhelp-php81'
funktioniert leider nicht.

Ich formuliere da mal ein Feature Request draus. Ich bin simultan aber auch im Kontakt mit dem Hersteller bzgl. einer Festsetzung der PHP Version.
tab-kh
Posts: 450
Joined: Thu 22. Apr 2021, 23:06

Re: Ändern der CLI PHP Version für Domain

Post by tab-kh »

Also typische Möglichkeiten für eine Software die PHP-Version festzulegen sind z.B.
  • Eine .env-Datei im Verzeichnis der Software, setzen einer Umgebungsvariable die den Pfad zum gewünschten PHP-CLI-Binary enthält.
  • Eine Konfig-Datei, in der der Pfad zum PHP-CLI Binary eingetragen wird.
  • Suchen nach PHP-CLI Binaries in typischen Verzeichnissen, Fallback manuelle Eingabe in Datei.
Letztlich muss die Software dann eben nur den Pfad einlesen und bei allen Aufrufen den ganzen Pfad verwenden anstatt nur "php".
User avatar
24unix
Posts: 1560
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: Ändern der CLI PHP Version für Domain

Post by 24unix »

tab-kh wrote: Tue 9. Aug 2022, 18:54 Also typische Möglichkeiten für eine Software die PHP-Version festzulegen sind z.B.
  • Eine .env-Datei im Verzeichnis der Software, setzen einer Umgebungsvariable die den Pfad zum gewünschten PHP-CLI-Binary enthält.
  • Eine Konfig-Datei, in der der Pfad zum PHP-CLI Binary eingetragen wird.
  • Suchen nach PHP-CLI Binaries in typischen Verzeichnissen, Fallback manuelle Eingabe in Datei.
Letztlich muss die Software dann eben nur den Pfad einlesen und bei allen Aufrufen den ganzen Pfad verwenden anstatt nur "php".
Das sind irgendwie alles workarounds, am einfachsten wäre es, wenn KH selber mit absoluten Pfaden arbeiten würde, dann sollte man die Default-Version nach eigenem Gusto ändern können.

Ist halt blöd, ohne Verrenkungen die nächsten 1-2 Jahre kein php8/8.1 für die Shell nutzen zu können.

Ich muss vor jeden Composer Aufruf ein keyhelp-php81 setzen, wenn ich features von PHP8.1 nutzen will.
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
tab-kh
Posts: 450
Joined: Thu 22. Apr 2021, 23:06

Re: Ändern der CLI PHP Version für Domain

Post by tab-kh »

Notfalls mach dir halt einen Symlink? Also ich gebe solche Sachen täglich auf x verschiedenen Hostings ein. Bei netcup kann man da immerhin EINE Version als Standard festlegen, die gilt dann aber für alles, was ich per CLI eingebe, also keinesfalls pro Domain. Diesen Standard kann ich in einer Datei festlegen und er wird dann nach ca 15 Minuten übernommen. Das geht dort per Symlink. Sowas könnte man natürlich auch über das Panel einstellbar machen statt eine Datei ändern zu müssen.

Da in den netcup Webhostings Domains mit unterschiedlichen PHP-Versionen laufen, habe ich davon nicht besonders viel. Ich setze den Standard halt auf die Version, die am häufigsten benutzt wird. Bei den anderen Anwendungen muss ich dort dann sogar den absoluten Pfad eingeben. Könnte mir dort natürlich auch selbst einen Symlink für jede Version machen. Dann wäre ich auf dem Stand von Keyhelp. Was meinst du sonst mit den absoluten Pfaden? Willst du die jedes Mal eingeben statt der Abkürzung keyhelp-phpxy, was ja auch nur ein in /usr/bin liegender Symlink auf die Version xy ist? Das kannst du ja machen. :) Notfalls, falls es darum geht, composer global zu installieren, kann ich mir z.B. einen globalen composer74 und composer80 machen wenn es wirklich not tut.
User avatar
Toorms
Posts: 137
Joined: Wed 18. Mar 2020, 20:11

Re: Ändern der CLI PHP Version für Domain

Post by Toorms »

tab-kh wrote: Tue 9. Aug 2022, 22:30 Notfalls mach dir halt einen Symlink?
Na dann änderst du es doch für das gesamte System und das soll / darf nicht. Also wenn ich "php" einfach Symlinke. Darum geht es ja in der ganzen Sache. :) Weil dann nutzen auch alle anderen Applikationen "php" (keyhelp-php81).
tab-kh
Posts: 450
Joined: Thu 22. Apr 2021, 23:06

Re: Ändern der CLI PHP Version für Domain

Post by tab-kh »

Nein, ich ändere es damit bei Bedarf pro User. Der Symlink muss ja nicht zwingend in /usr/bin liegen. Ich kann ihn z.B. nach /home/users/meinuser/bin legen und dieses Verzeichnis schön prominent in meinen PATH platzieren. Das wird bei Eingabe von Befehlen in der Konsole funktionieren, aber vermutlich eher nicht, wenn PHP von PHP per exec, passthru o.ä. aufgerufen wird. Aber da sehe ich auch eher die Chance, dass man das irgendwie einstellbar macht oder zumindest immer die selbe PHP-Version verwendet wie der Webprozess, also die aufgerufene Domain. Also das PHP-CLI der selben PHP-Version aufruft. Denn in dem Fall hat man zumindest mal die Information, mit welcher Domain der Webprozess aufgerufen wird.

Bei der Eingabe von Befehlen in der Konsole hat man diese Info nicht, weil beim Aufruf keine Domain angegeben wird, sondern nur ein Pfad zum Skript. Da könnte man es höchstens am Pfad des aufgerufenen Skripts festzumachen versuchen. Aber das ist dann m.E. doch eine ziemlich abenteuerliche Konstruktion. Für Risiken und Nebenwirkungen fragen Sie ... Macht so auch sicher kein Hoster. Aber wie sonst? Wie gesagt, es ist vermutlich kein Zufall, dass Software, die ansonsten relativ hohe Ansprüche an die Serverumgebung stellt, von mir noch nie verlangt hat, es müsse mit Aufruf von "php" in der Konsole eine domainspezifische PHP-Version aufgerufen werden. Klar, in der Doku steht schon meist einfach "php" bei dort aufgeführten Befehlen. Aber meistens steht auch irgendwo, dass man halt den Pfad zum passenden PHP-Binary mit angeben muss, wenn es mehrere PHP-Versionen auf dem Server gibt. Oder das wird eben stillschweigend vorausgesetzt.
User avatar
Toorms
Posts: 137
Joined: Wed 18. Mar 2020, 20:11

Re: Ändern der CLI PHP Version für Domain

Post by Toorms »

tab-kh wrote: Wed 10. Aug 2022, 08:54 Nein, ich ändere es damit bei Bedarf pro User.
Wie gehst du denn da vor? Weil wenn ich unter dem user xy einen alias auf "keyhelp-php81" "php" in dem userspezifischen .bashrc mache, dann bringt das leider nichts.

Wenn ich danach

Code: Select all

sudo -u userxy php -v 
ausführe, bleibt dennoch 7.4. Wie gehst du da vor?
Post Reply