Aktuelles PHP mit phpenv: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Aktuelle PHP Version (also PHP 7.1 oder 7.2) lassen sich in einem ''phpenv'' installieren.
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
    $ phpenv install 7.1snapshot


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: 7.1-Snapshot) mit FastCGI (wie bei Hostsharing üblich) zu nutzen
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 abändern:
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/7.1snapshot/bin/php-cgi", "php", NULL);
           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 wird der PHP-Stub kompiliert und an den richtigen Ort im Domainverzeichnis kopiert:
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/
    $ cp phpstub $HOME/doms/example.com/fastcgi/


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 mit: ''https://www.example.com/info.php'' die PHP-Version mit allen Informationen
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.