Aktuelles PHP mit phpenv: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
Dge00 (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Aktuelle PHP | Aktuelle PHP Versionen (8.x , wobei "x" z.B. Stand November 2022 entweder 0.25 oder 1.12 sein könnten) lassen sich in einem ''phpenv'' installieren. | ||
== phpenv == | == phpenv == | ||
Zeile 10: | Zeile 10: | ||
$ eval "$(phpenv init -)" | $ eval "$(phpenv init -)" | ||
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build | $ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build | ||
Welche PHP-Versionen verfügbar sind findet man mit: | Welche PHP-Versionen verfügbar sind, findet man '''nach''' der Ausführung des oben beschriebenen ''git clone'' mit: | ||
$ phpenv install -l | $ phpenv install -l | ||
Zeile 19: | Zeile 18: | ||
~/.phpenv/plugins/php-build/share/php-build/default_configure_options | ~/.phpenv/plugins/php-build/share/php-build/default_configure_options | ||
...man sollte sie sich also zuvor anschauen. | |||
Die PHP-Version ''8.xsnapshot'' aus der Liste der verfügbaren PHP-Versionen installiert man anschließend zum Beispiel per: | |||
$ phpenv install 8.xsnapshot | |||
== phpstub für FastCGI == | == phpstub für FastCGI == | ||
Um diese PHP-Version (hier: | Um diese PHP-Version (hier: 8.x-Snapshot) mit FastCGI (wie bei Hostsharing üblich) zu nutzen | ||
benötigt man noch einen eingenen PHP-Stub. Dazu: | benötigt man noch einen eingenen PHP-Stub. Dazu kopiert man sich das zentral abgelegte originale phpstub-Verzeichnis in das eigene HOME-Verzeichnis, löscht daraus die phpstub-Datei (phpstub) und editiert die C-Quelldatei des phpstub (phpstub.c): | ||
$ cd $HOME | $ cd $HOME | ||
Zeile 31: | Zeile 38: | ||
$ editor phpstub.c | $ editor phpstub.c | ||
Das kleine C-Programm wie folgt | Das kleine C-Programm des phpstub (phpstub.c) ändert man im soeben geöffneten editor wie folgt ab: | ||
#include <stdlib.h> | #include <stdlib.h> | ||
Zeile 42: | Zeile 49: | ||
execl(phpbin, "php", NULL); | execl(phpbin, "php", NULL); | ||
} else { | } else { | ||
execl("/home/pacs/xyz00/users/testuser/.phpenv/versions/ | execl("/home/pacs/xyz00/users/testuser/.phpenv/versions/8.xsnapshot/bin/php-cgi", "php", NULL); | ||
} | } | ||
return(EXIT_FAILURE); | return(EXIT_FAILURE); | ||
Zeile 48: | Zeile 55: | ||
Dabei sind die Pfadbestandteile "xyz00" und "testuser" durch den Namen des eigenen Paketes und den | Dabei sind die Pfadbestandteile "xyz00" und "testuser" durch den Namen des eigenen Paketes und den | ||
hinteren Bestandteil des aktuellen Usernamens zu ersetzen. | hinteren Bestandteil des aktuellen Usernamens zu ersetzen. Ebenso sollte "8.xsnapshot" durch die selbst gewählte PHP-Versionsbezeichnung ersetzt werden. | ||
Nach Verlassen des Editors | Nach Verlassen des Editors muss der PHP-Stub zunächst kompiliert werden. Anschließend muss man ihn an den richtigen Ort im Domainverzeichnis kopieren. Wie dies umgesetzt wird, zeigt diese Befehlsfolge: | ||
$ cd $HOME/phpstub | $ cd $HOME/phpstub | ||
$ make | $ make | ||
$ cp phpstub $HOME/doms/example.com/fastcgi/ | |||
$ cp phpstub $HOME/doms/example.com/fastcgi-ssl/ | $ cp phpstub $HOME/doms/example.com/fastcgi-ssl/ | ||
Mit einem kleinen PHP-Skript lässt sich schnell prüfen, ob alles geklappt hat: Man kann eine Datei ''info.php'' mit dem folgenden Inhalt im Verzeichnis ''$HOME/doms/example.com/subs-ssl/www/'' ablegen. | In der .htaccess-Datei im DocumentRoot der Sub-Domain <SUBDOMAIN> kann man dann die PHP-Dateien auf einen beliebigen phpstub - wie z.B. den eben erzeugten eigenen phpstub - mappen. | ||
Dazu müssen die folgenden beiden Zeilen zu Beginn in die oben erwähnte .htaccess-Datei eingefügt werden ("phpstub" ersetzen durch den selbstvergebenen Dateinamen des eigenen stubs, <SUBDOMAIN> an die eigene subdomain passen - der Platzhalter <SUBDOMAIN>/ kann ggfs. auch ganz entfernt werden): | |||
AddType application/x-httpd-phpfastcgi .php | |||
Action application/x-httpd-phpfastcgi /fastcgi-bin/<SUBDOMAIN>/phpstub | |||
(siehe dazu auch: https://wiki.hostsharing.net/index.php?title=PHP#eigene_PHP_Konfigurationen_und_verschiedene_nebeneinander_verwenden | |||
und | |||
https://wiki.hostsharing.net/index.php?title=WWW#Einstellungen_zum_HTTP_Zugriff) | |||
Mit einem kleinen PHP-Skript lässt sich schnell prüfen, ob alles geklappt hat: Man kann eine Datei ''info.php'' mit dem folgenden Inhalt im Verzeichnis ''$HOME/doms/example.com/subs/www/'' bzw. ''$HOME/doms/example.com/subs-ssl/www/'' ablegen. | |||
<?php | <?php | ||
Zeile 63: | Zeile 81: | ||
?> | ?> | ||
Im Browser sollte | Im Browser sollte dann durch Aufruf des URL http://www.example.com/info.php bzw. https://www.example.com/info.php die PHP-Version mit allen Informationen | ||
über das selbstgebaute PHP angezeigt werden. | über das selbstgebaute PHP angezeigt werden. | ||
Achtung: ''example.com'' ist überall durch eine eigene gültige und beim User aufgeschaltete (Sub-)Domain | Achtung: ''example.com'' ist überall durch eine eigene gültige und beim User aufgeschaltete (Sub-)Domain | ||
zu ersetzen. | zu ersetzen. |
Aktuelle Version vom 19. November 2022, 09:43 Uhr
Aktuelle PHP Versionen (8.x , wobei "x" z.B. Stand November 2022 entweder 0.25 oder 1.12 sein könnten) lassen sich in einem phpenv installieren.
phpenv
Dazu geht man wie folgt vor:
$ cd $HOME $ git clone git://github.com/phpenv/phpenv.git ~/.phpenv $ export PATH=$PATH:~/.phpenv/bin $ eval "$(phpenv init -)" $ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
Welche PHP-Versionen verfügbar sind, findet man nach der Ausführung des oben beschriebenen git clone mit:
$ phpenv install -l
Die voreingestellten Optionen für das Kompilieren von PHP mit php-build holt das Skript aus der Datei
~/.phpenv/plugins/php-build/share/php-build/default_configure_options
...man sollte sie sich also zuvor anschauen.
Die PHP-Version 8.xsnapshot aus der Liste der verfügbaren PHP-Versionen installiert man anschließend zum Beispiel per:
$ phpenv install 8.xsnapshot
phpstub für FastCGI
Um diese PHP-Version (hier: 8.x-Snapshot) mit FastCGI (wie bei Hostsharing üblich) zu nutzen benötigt man noch einen eingenen PHP-Stub. Dazu kopiert man sich das zentral abgelegte originale phpstub-Verzeichnis in das eigene HOME-Verzeichnis, löscht daraus die phpstub-Datei (phpstub) und editiert die C-Quelldatei des phpstub (phpstub.c):
$ cd $HOME $ cp -a /usr/local/src/phpstub/ . $ cd $HOME/phpstub $ rm phpstub $ editor phpstub.c
Das kleine C-Programm des phpstub (phpstub.c) ändert man im soeben geöffneten editor wie folgt ab:
#include <stdlib.h> #include <unistd.h> #include <libgen.h> int main(int argc, char* argv[]) { setenv("PHPRC", dirname(argv[0]), 1); const char* phpbin = getenv("HTTP_PHP_BIN"); if(phpbin) { execl(phpbin, "php", NULL); } else { execl("/home/pacs/xyz00/users/testuser/.phpenv/versions/8.xsnapshot/bin/php-cgi", "php", NULL); } return(EXIT_FAILURE); }
Dabei sind die Pfadbestandteile "xyz00" und "testuser" durch den Namen des eigenen Paketes und den hinteren Bestandteil des aktuellen Usernamens zu ersetzen. Ebenso sollte "8.xsnapshot" durch die selbst gewählte PHP-Versionsbezeichnung ersetzt werden.
Nach Verlassen des Editors muss der PHP-Stub zunächst kompiliert werden. Anschließend muss man ihn an den richtigen Ort im Domainverzeichnis kopieren. Wie dies umgesetzt wird, zeigt diese Befehlsfolge:
$ cd $HOME/phpstub $ make $ cp phpstub $HOME/doms/example.com/fastcgi/ $ cp phpstub $HOME/doms/example.com/fastcgi-ssl/
In der .htaccess-Datei im DocumentRoot der Sub-Domain <SUBDOMAIN> kann man dann die PHP-Dateien auf einen beliebigen phpstub - wie z.B. den eben erzeugten eigenen phpstub - mappen. Dazu müssen die folgenden beiden Zeilen zu Beginn in die oben erwähnte .htaccess-Datei eingefügt werden ("phpstub" ersetzen durch den selbstvergebenen Dateinamen des eigenen stubs, <SUBDOMAIN> an die eigene subdomain passen - der Platzhalter <SUBDOMAIN>/ kann ggfs. auch ganz entfernt werden):
AddType application/x-httpd-phpfastcgi .php Action application/x-httpd-phpfastcgi /fastcgi-bin/<SUBDOMAIN>/phpstub
(siehe dazu auch: https://wiki.hostsharing.net/index.php?title=PHP#eigene_PHP_Konfigurationen_und_verschiedene_nebeneinander_verwenden und https://wiki.hostsharing.net/index.php?title=WWW#Einstellungen_zum_HTTP_Zugriff)
Mit einem kleinen PHP-Skript lässt sich schnell prüfen, ob alles geklappt hat: Man kann eine Datei info.php mit dem folgenden Inhalt im Verzeichnis $HOME/doms/example.com/subs/www/ bzw. $HOME/doms/example.com/subs-ssl/www/ ablegen.
<?php phpinfo(); ?>
Im Browser sollte dann durch Aufruf des URL http://www.example.com/info.php bzw. https://www.example.com/info.php die PHP-Version mit allen Informationen über das selbstgebaute PHP angezeigt werden.
Achtung: example.com ist überall durch eine eigene gültige und beim User aufgeschaltete (Sub-)Domain zu ersetzen.