Aktuelles PHP mit phpenv: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
(Hinweis auf Nacharbeit ergänzt: PHP-Dateien in .htaccess-Datei auf einen beliebigen phpstub mappen)
Zeile 63: Zeile 63:
     $ cp phpstub $HOME/doms/example.com/fastcgi/
     $ cp phpstub $HOME/doms/example.com/fastcgi/
     $ cp phpstub $HOME/doms/example.com/fastcgi-ssl/
     $ 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.
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.

Version vom 24. März 2019, 23:40 Uhr

Aktuelle PHP Version (also PHP 7.1.x, 7.2.x oder 7.3.x) 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 7.1snapshot aus der Liste der verfügbaren PHP-Versionen installiert man anschließend zum Beispiel per:

   $ phpenv install 7.1snapshot


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 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/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. Ebenso sollte "7.1snapshot" 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.