alias für keyhelp-php81 usw ? [GELÖST]
alias für keyhelp-php81 usw ?
Hallo Keyhelp Team,
ich arbeite bei meinen Web-Projekten mehr und mehr von der Kommandozeile, weil da Sachen wie Import/Export-Skripte einfach verlässlicher laufen.
Jetzt kann ich entsprechend der gesetzten PHP Version der Domain statt "php" den entsprechenden Befehl "keyhelp-php81" oder "keyhelp-php82" benutzen, was schon mal toll ist.
Es ist aber immer wieder mal auch ein Problem oder zumindest umständlich - daher wollte ich fragen, ob es möglich wäre, einen generischen alias zu haben, der immer die aktuelle PHP Version der entsprechenden Domain verwendet? Die Zuordnung müsste ja über das DocumentRoot eigentlich möglich sein?
also wenn ich zb in /home/users/foo/www/domain-mit-php81/ den Befehl "domain-php scripts/import.php" ausführe, dann würde das mit php8.1 laufen.
wenn ich in /home/users/foo/www/domain-mit-php82 denselben Befehl ausführe, dann würde er PHP8.2 nehmen, weil even für dieses DocRoot 8.2 ausgewählt ist und nicht 8.1
Ich weiß jetzt gar nicht, ob das technisch überhaupt möglich ist, aber ich denke einmal ja
2 Gründe für den Wunsch:
1) Wenn man viele Projekte verwaltet, dann merkt man sich das eventuell nicht auswendig, welches Projekt welche Version hat und man muss immer erst nachsehen
2) Für automatisierte Deployments ist das aktuelle Verhalten auch nicht ideal. Ich muss die PHP-Version, die meine Github Actions verwenden, immer in irgendeiner Config angeben. Das ist zwar möglich, aber schreit nach Fehlern, wenn man mal Projekte updated und dann vergisst, die PHP-Version in der Deployment Pipeline anzupassen. So Dinge laufen immer ne Zeit lang gut und dann eines Tages gibt es Probleme und man weiß nicht warum, weil die Umstellung evtl. schon länger her ist und man das Problem damit dann gar nicht mehr in Verbindung bringt.
Falls jemand andere Lösungsvorschläge hat bin ich dankbar.
ich arbeite bei meinen Web-Projekten mehr und mehr von der Kommandozeile, weil da Sachen wie Import/Export-Skripte einfach verlässlicher laufen.
Jetzt kann ich entsprechend der gesetzten PHP Version der Domain statt "php" den entsprechenden Befehl "keyhelp-php81" oder "keyhelp-php82" benutzen, was schon mal toll ist.
Es ist aber immer wieder mal auch ein Problem oder zumindest umständlich - daher wollte ich fragen, ob es möglich wäre, einen generischen alias zu haben, der immer die aktuelle PHP Version der entsprechenden Domain verwendet? Die Zuordnung müsste ja über das DocumentRoot eigentlich möglich sein?
also wenn ich zb in /home/users/foo/www/domain-mit-php81/ den Befehl "domain-php scripts/import.php" ausführe, dann würde das mit php8.1 laufen.
wenn ich in /home/users/foo/www/domain-mit-php82 denselben Befehl ausführe, dann würde er PHP8.2 nehmen, weil even für dieses DocRoot 8.2 ausgewählt ist und nicht 8.1
Ich weiß jetzt gar nicht, ob das technisch überhaupt möglich ist, aber ich denke einmal ja
2 Gründe für den Wunsch:
1) Wenn man viele Projekte verwaltet, dann merkt man sich das eventuell nicht auswendig, welches Projekt welche Version hat und man muss immer erst nachsehen
2) Für automatisierte Deployments ist das aktuelle Verhalten auch nicht ideal. Ich muss die PHP-Version, die meine Github Actions verwenden, immer in irgendeiner Config angeben. Das ist zwar möglich, aber schreit nach Fehlern, wenn man mal Projekte updated und dann vergisst, die PHP-Version in der Deployment Pipeline anzupassen. So Dinge laufen immer ne Zeit lang gut und dann eines Tages gibt es Probleme und man weiß nicht warum, weil die Umstellung evtl. schon länger her ist und man das Problem damit dann gar nicht mehr in Verbindung bringt.
Falls jemand andere Lösungsvorschläge hat bin ich dankbar.
Re: alias für keyhelp-php81 usw ?
Hallo,
---
Ich warne schon mal davor, den Binarynamen "php" auf eine der zusätzlich installierbaren PHP-Versionen umzubiegen. Das führt ganz sicher früher oder später zu Problemen. Auf KeyHelp Systemen wird davon ausgegangen, das sich unter "php" immer die vom Betriebssystem vorgegeben PHP-Version befindet.
Diese Information wäre nicht eindeutig. Es könnten mehrere Domains auf das selbe Verzeichnis zeigen, die alle mit einer unterschiedlichen PHP-Version betrieben werden könnten.Es ist aber immer wieder mal auch ein Problem oder zumindest umständlich - daher wollte ich fragen, ob es möglich wäre, einen generischen alias zu haben, der immer die aktuelle PHP Version der entsprechenden Domain verwendet? Die Zuordnung müsste ja über das DocumentRoot eigentlich möglich sein?
---
Ich warne schon mal davor, den Binarynamen "php" auf eine der zusätzlich installierbaren PHP-Versionen umzubiegen. Das führt ganz sicher früher oder später zu Problemen. Auf KeyHelp Systemen wird davon ausgegangen, das sich unter "php" immer die vom Betriebssystem vorgegeben PHP-Version befindet.
Mit freundlichen Grüßen / Best regards
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Re: alias für keyhelp-php81 usw ?
Hallo Alexander, danke für deine Antwort!
Wäre es möglich, dass einfach die erste oder letzte Domain gewinnt? Für mich wäre das eine wunderbare Lösung, die mir einiges an Setup sparen und Fehler vermeiden würde und für jeden, der unterschiedliche Domains auf demselben Document Root betreibt, blieben immer noch die bereits vorhandenen commands ala keyhelp-php81 usw.
Danke, das ist mir klar Deshalb war meine Idee, einen zusätzlichen generischen namen ala "domain-php" einzuführen.Ich warne schon mal davor, den Binarynamen "php" auf eine der zusätzlich installierbaren PHP-Versionen umzubiegen. Das führt ganz sicher früher oder später zu Problemen. Auf KeyHelp Systemen wird davon ausgegangen, das sich unter "php" immer die vom Betriebssystem vorgegeben PHP-Version befindet.
Hmm... ja stimmt, schade. Für mich wäre das aber kein Thema, denn ich hab immer nur eine Domain pro Document Root. Ich denke - aber das ist nur eine Vermutung - dass das bei den meisten so ist.Diese Information wäre nicht eindeutig. Es könnten mehrere Domains auf das selbe Verzeichnis zeigen, die alle mit einer unterschiedlichen PHP-Version betrieben werden könnten.
Wäre es möglich, dass einfach die erste oder letzte Domain gewinnt? Für mich wäre das eine wunderbare Lösung, die mir einiges an Setup sparen und Fehler vermeiden würde und für jeden, der unterschiedliche Domains auf demselben Document Root betreibt, blieben immer noch die bereits vorhandenen commands ala keyhelp-php81 usw.
Re: alias für keyhelp-php81 usw ?
Du könntest dir die Aliase auch selbst im System anlegen:
Code: Select all
ln -s /opt/keyhelp/php/<PHP-VERSION>/bin/php /usr/bin/meine-domain-php
ln -s /opt/keyhelp/php/<PHP-VERSION>/bin/php /usr/bin/meine-zweite-domain-php
Mit freundlichen Grüßen / Best regards
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Re: alias für keyhelp-php81 usw ?
Hallo Alexander,
vielen Dank für den Input! Das löst mein Problem leider nicht - im Gegenteil, das macht das Setup noch komplizierter und fehleranfälliger, als wenn ich gleich keyhelp-php81 usw nutze.
Aktuell hab ich die PHP-Version von jedem Projekt an 3 Stellen:
Ersetzen durch das:
ANDERE IDEE!
Könnte KeyHelp die verwendete PHP-Version als ENV Variable setzen? Dann könnte ich die Variable einfach auslesen und im Skript verwenden:
Das würde dann sogar auf Domain-Ebene klappen, also unterschiedliche Domains auf gleichem DocRoot würden einfach unterschiedliche Variablen setzen
Ich könnte mir die ->php() Zeile sogar komplett sparen, da das Deployment ein Open-Source Modul von mir ist, wo ich das Feature global einbauen könnte. Wenn KEYHELP_DOMAIN_PHP gesetzt ist, dann nimmt das Deployment den Befehl, der dort hinterlegt ist (zB "keyhelp-php81") und wenn nicht, dann nimmt es einfach nur "php".
Das wäre echt toll und ich glaube nicht, dass das irgendwelche ungewünschten Nebeneffekte haben könnte?
vielen Dank für den Input! Das löst mein Problem leider nicht - im Gegenteil, das macht das Setup noch komplizierter und fehleranfälliger, als wenn ich gleich keyhelp-php81 usw nutze.
Aktuell hab ich die PHP-Version von jedem Projekt an 3 Stellen:
- In DDEV für's lokale Entwickeln
- Im Keyhelp für das Produktivsystem (und eventuell zusätzlich auf einem Stagingsystem)
- Im Deployment-Skript, das über Github Actions gesteuert wird
Code: Select all
<?php
require_once __DIR__ . "/Deployment.php";
$deploy = new Deployment($argv);
// use php8.2 for deployment
$deploy->php("keyhelp-php82");
$deploy->run();
Code: Select all
...
// use php-version set by the KeyHelp domain
$deploy->php("domain-php");
...
Könnte KeyHelp die verwendete PHP-Version als ENV Variable setzen? Dann könnte ich die Variable einfach auslesen und im Skript verwenden:
Code: Select all
...
$deploy->php($_ENV['KEYHELP_DOMAIN_PHP']);
...
Ich könnte mir die ->php() Zeile sogar komplett sparen, da das Deployment ein Open-Source Modul von mir ist, wo ich das Feature global einbauen könnte. Wenn KEYHELP_DOMAIN_PHP gesetzt ist, dann nimmt das Deployment den Befehl, der dort hinterlegt ist (zB "keyhelp-php81") und wenn nicht, dann nimmt es einfach nur "php".
Das wäre echt toll und ich glaube nicht, dass das irgendwelche ungewünschten Nebeneffekte haben könnte?
Re: alias für keyhelp-php81 usw ?
Ich kann scheinbar meinen Betrag nicht bearbeiten, deshalb muss ich leider doppel-posten
Wenn es allerdings - wie in meinem ursprünglichen Vorschlag - einen generischen "domain-php" command gäbe, dann könnte die Github Action einfach "domain-php /path/to/script.php" ausführen und Keyhelp würde sich darum kümmern, das mit der richtigen PHP-Version auszuführen... *träum
Das ist leider Blödsinn - ich habe gerade selbst gemerkt, dass das nicht funktionieren kann, da ja die Github Action das Deployment via SSH startet und damit keine ENV variablen gesetzt sind. Die Action stößt ja dann erst das Deployment per PHP an, und dafür muss Github schon wissen, welche PHP Version genommen werden soll.ANDERE IDEE!
Könnte KeyHelp die verwendete PHP-Version als ENV Variable setzen? Dann könnte ich die Variable einfach auslesen und im Skript verwenden:
Wenn es allerdings - wie in meinem ursprünglichen Vorschlag - einen generischen "domain-php" command gäbe, dann könnte die Github Action einfach "domain-php /path/to/script.php" ausführen und Keyhelp würde sich darum kümmern, das mit der richtigen PHP-Version auszuführen... *träum
Re: alias für keyhelp-php81 usw ? [GELÖST]
Schau mal, ob das für dich passen würde:
Installation:
Immer wenn du nun den Befehl "keyhelp-domain-php" aufrufst und dich in einem Verzeichnis befindet, dass zu einem Zielverzeichnis einer Domain zurückzuführen ist wird dessen entsprechende PHP Version verwendet. Alle angegeben Parameter werden durchgeschleift. Du kannst also die selben Parameter nutzen, wie beim PHP-Binary. Das heißt zum schnellen testen, einfach "-v" anhängen und du bekommst die Version.
Sollte sich das aktuelle Verzeichnis, in dem man sich befindet nicht auf eine Domain zurückzuführen sein, wird immer auf "php" zurückgefallen.
Edit: - und _ korrigiert
Installation:
Code: Select all
# Script Installieren - für Debian 10, Debian 11 Ubuntu 20
wget https://install.keyhelp.de/misc/php71/keyhelp_domain_php -O /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php ; chown keyhelp:keyhelp /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php ;
# Script Installieren - für Ubuntu 22
wget https://install.keyhelp.de/misc/php81/keyhelp_domain_php -O /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php ; chown keyhelp:keyhelp /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php ;
# Script Installieren - für Debian 12
wget https://install.keyhelp.de/misc/php82/keyhelp_domain_php -O /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php ; chown keyhelp:keyhelp /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php ;
# Link erstellen, so dass künftig der Befehl "keyhelp_domain_php" genutzt werden kann
ln -s /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php /usr/bin/keyhelp-domain-php ;
# Ausführen-Berechtigungen setzen
chmod 0755 /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php ;
Immer wenn du nun den Befehl "keyhelp-domain-php" aufrufst und dich in einem Verzeichnis befindet, dass zu einem Zielverzeichnis einer Domain zurückzuführen ist wird dessen entsprechende PHP Version verwendet. Alle angegeben Parameter werden durchgeschleift. Du kannst also die selben Parameter nutzen, wie beim PHP-Binary. Das heißt zum schnellen testen, einfach "-v" anhängen und du bekommst die Version.
Code: Select all
keyhelp-domain-php -v
Edit: - und _ korrigiert
Mit freundlichen Grüßen / Best regards
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Re: alias für keyhelp-php81 usw ?
Yeah!!! Sehr geil, ja, das klappt!! Du hast allerdings zwei Fehler in deinen Commands ( _ und - vertauscht):
Mit den angepassten Commands klappt das genau so, wie ich es mir vorgestellt habe
Vielen Dank!! Ich nehme an, das wird dann in eines der nächsten Updates einfließen?
Code: Select all
# falsch
ln -s /home/keyhelp/www/keyhelp/bin/keyhelp-domain-php.php /usr/bin/keyhelp-domain-php ;
# richtig
ln -s /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php /usr/bin/keyhelp-domain-php ;
# falsch
chmod 0755 /home/keyhelp/www/keyhelp/bin/keyhelp-domain-php.php ;
# richtig
chmod 0755 /home/keyhelp/www/keyhelp/bin/keyhelp_domain_php.php ;
Vielen Dank!! Ich nehme an, das wird dann in eines der nächsten Updates einfließen?
Re: alias für keyhelp-php81 usw ?
Danke,
Hab die Datei noch last-minute umbenannt und dann ... *oops* . Es sollte jetzt alle - und _ korrigiert sein.
Hab die Datei noch last-minute umbenannt und dann ... *oops* . Es sollte jetzt alle - und _ korrigiert sein.
JaIch nehme an, das wird dann in eines der nächsten Updates einfließen?
Mit freundlichen Grüßen / Best regards
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************