Ändern der CLI PHP Version für Domain
Ändern der CLI PHP Version für Domain
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?
Falls es das nicht gäbe; Feature Request?
Cheers
Toorms
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?
Falls es das nicht gäbe; Feature Request?
Cheers
Toorms
Re: Ändern der CLI PHP Version für Domain
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!?!
Re: Ändern der CLI PHP Version für Domain
Die Cronjobs sind seit gestern schon auf 8.1tab-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!?!
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
Re: Ändern der CLI PHP Version für Domain
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.
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
Re: Ändern der CLI PHP Version für Domain
Das letzte ist eine gute Frage
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;
}
Re: Ändern der CLI PHP Version für Domain
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?
Re: Ändern der CLI PHP Version für Domain
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?)
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?)
Re: Ändern der CLI PHP Version für Domain
Oder eben doch ein Feature-Request - bei der Anwendung.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?)
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 . 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).
Re: Ändern der CLI PHP Version für Domain
Ein Alias unter /home/user/foobar/.bashrc mit dem folgendenmhagge 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?)
Code: Select all
alias php='keyhelp-php81'
Ich formuliere da mal ein Feature Request draus. Ich bin simultan aber auch im Kontakt mit dem Hersteller bzgl. einer Festsetzung der PHP Version.
Re: Ändern der CLI PHP Version für Domain
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.
Re: Ändern der CLI PHP Version für Domain
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.tab-kh wrote: ↑Tue 9. Aug 2022, 18:54 Also typische Möglichkeiten für eine Software die PHP-Version festzulegen sind z.B.
Letztlich muss die Software dann eben nur den Pfad einlesen und bei allen Aufrufen den ganzen Pfad verwenden anstatt nur "php".
- 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.
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.
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
Re: Ändern der CLI PHP Version für Domain
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.
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.
Re: Ändern der CLI PHP Version für Domain
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).
Re: Ändern der CLI PHP Version für Domain
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.
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.
Re: Ändern der CLI PHP Version für Domain
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