Aktuelles PHP mit phpenv

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

Aktuelle PHP Version (also PHP 7.1 oder 7.2) 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
   $ phpenv install 7.1snapshot

Welche PHP-Versionen verfügbar sind findet man 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

phpstub für FastCGI

Um diese PHP-Version (hier: 7.1-Snapshot) mit FastCGI (wie bei Hostsharing üblich) zu nutzen benötigt man noch einen eingenen PHP-Stub. Dazu:

   $ cd $HOME
   $ cp -a /usr/local/src/phpstub/ .
   $ cd $HOME/phpstub
   $ rm phpstub
   $ editor phpstub.c

Das kleine C-Programm wie folgt abändern:

   #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/7.1snapshot/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.

Nach Verlassen des Editors wird der PHP-Stub kompiliert und an den richtigen Ort im Domainverzeichnis kopiert:

   $ cd $HOME/phpstub
   $ make  
   $ 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.

   <?php
       phpinfo();
   ?>

Im Browser sollte mit: 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.