Doppelpost, weil aus dem Edit-Window raus.
Also, es geht, aber für den Produktiveinsatz würde ich es niemandem empfehlen.
Das ist nur eine Information zum technischem Hintergrund, ich ermuntere niemanden, dass nachzumachen, ausser auf einem Bastelsystem im LAN oder einer VM!
Vorab: 2 PHP-Versionen gehen einfach, wenn man sie z.B. fur die CLI benötigt.
Wichtig ist, dass das php binary im System genau die Version hat, mit der Debian Bookworm ausgeliefert wird, PHP8.2, sonst funktioniert das Panel nicht mehr.
Also, dann mal zur Tat schreiten:
Das mit dem Editor eurer Wahl anlegen:
Code: Select all
#!/bin/sh
# To add this repository please do:
if [ "$(whoami)" != "root" ]; then
SUDO=sudo
fi
${SUDO} apt-get update
${SUDO} apt-get -y install lsb-release ca-certificates curl
${SUDO} curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
${SUDO} dpkg -i /tmp/debsuryorg-archive-keyring.deb
${SUDO} sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
${SUDO} apt-get update
Z.B.
danach
Dann könnt ihr mit
die aktuellste Version, 8.1 wie vom OP gewünscht oder halt jede andere die bei Sury verfügbar ist installieren.
Jetzt kommt der wichtige Schritt:
Code: Select all
update-alternatives --set php /usr/bin/php8.2
Jetzt sollte euer System sich so verhalten:
Code: Select all
❯ php --version
PHP 8.2.24 (cli) (built: Sep 27 2024 04:16:10) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.24, Copyright (c) Zend Technologies
with the ionCube PHP Loader v13.3.0, Copyright (c) 2002-2024, by ionCube Ltd.
with SourceGuardian v15.0.1, Copyright (c) 2000-2024, by SourceGuardian Ltd.
with Zend OPcache v8.2.24, Copyright (c), by Zend Technologies
with Xdebug v3.2.0, Copyright (c) 2002-2022, by Derick Rethans
❯ php8.4 --version
PHP 8.4.0RC4 (cli) (built: Nov 16 2024 18:40:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.0RC4, Copyright (c) Zend Technologies
with Zend OPcache v8.4.0RC4, Copyright (c), by Zend Technologies
Ihr habt nun eine alternative PHP Version auf dem System die ihr auf der Shell nutzen könnt. Das Panel funktioniert weiterhin.
Wenn ihr jedoch eine Webseite mit einer anderen PHP-Version ausliefern wollt, ist mehr Aufwand erforderlich,
und ich rate für den Produktivbetrieb dringend davon ab, zum Spielen in einer VM ist es OK.
Als erstes braucht ihr PHP-fpm:
Ich habe dann in der db eine Domain auf PHP-8.4 umgestellt:
Code: Select all
UPDATE `domains` SET `php_version` = '8.4' WHERE `domains`.`id` = 22
Die id bekommt ihr raus, indem ihr mit der Maus über dem Edit-Button hovert, dann wird in der Statuszeile eine URL mit GET-Parametern angezeigt, z.B.:
https://keyhelp.lab.24unix.net/index.ph ... t&id=[b]22[/b]

- SCR-20241120-pnpt.png (7.51 KiB) Viewed 5109 times
Alternativ könntet ihr auch
nehmen.
Oder ihr nehmt PhpMyAdmin.
Jetzt könnt ihr mit der
die Domain-Config neu generieren lassen. (Erster Punkt in der Liste).
Ich habe dann die pool conf von keyhelp über die default conf kopiert:
Code: Select all
cp /etc/php/8.2/fpm/keyhelp_pool/tracer.conf /etc/php/8.4/fpm/pool.d/www.conf
Als nächstes
Dann eine Testseite anlegen, z.B. i.html
mit dem Inhalt:
Die könnt ihr nun aufrufen und werdet von einem 500er empfangen.
Jetzt schaut ihr in die error-log der betreffenden Domain, und seht, wo es klemmt:
Code: Select all
[Wed Nov 20 17:07:37.314476 2024] [proxy:error] [pid 9866:tid 9909] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/php/keyhelp_tracer_php84.socket (keyhelp_tracer_php84.socket:8000) failed
Der letzte Schritt ist nun, den Namen der Socket-Datei in der pool-Config anzupassen:
Code: Select all
vi /etc/php/8.4/fpm/pool.d/www.conf
Die Zeile: listen = /run/php/keyhelp_tracer_php84.socket
müsst ihr anpassen.
Dann nochmal den fpm Prozess neu starten, und es sollte klappen (Wenn ich in meinem Gedächtnisprotokoll nichts vergessen habe, ansonsten bitte nachhaken).
Ich hoffe, der eine oder andere kann etwas damit anfangen, ich fand es auf jeden Fall spannend, weil ich nicht wusste, was genau KeyHelp generiert, wenn der Interpreter dem System selber nicht bekannt ist.