PHP Installation · 6 min read · Nov 03, 2025

Wie man PHP 7 als PHP-FPM & FastCGI für ISPConfig 3 auf Debian 8 (Jessie) installiert

Die endgültige Version von PHP 7 ist jetzt zum Download auf Github und den PHP-Spiegeln verfügbar. PHP7 ist die nächste Generation der PHP-Programmiersprache, es ist bis zu 2 Mal schneller als PHP 5.6 und 14 Mal schneller als PHP 5.0 laut den Versionshinweisen. Die neue PHP-Version ist nicht 100% kompatibel mit PHP 5.x, da einige veraltete APIs entfernt wurden, daher ist es eine gute Idee, Ihre Websites auf die Kompatibilität mit dieser neuen Version zu testen. Dies kann einfach und ohne Beeinträchtigung aller Websites auf Ihrem Server durch die Verwendung der Multi-PHP-Version-Funktion in ISPConfig 3 erfolgen. Die PHP-Version kann in den ISPConfig 3-Website-Einstellungen für jede Website einzeln ausgewählt werden. Diese Funktion funktioniert mit PHP-FPM und FastCGI. Dieses Tutorial zeigt, wie man das neue PHP 7 als PHP-FPM- und FastCGI-Version auf einem Debian Jessie-Server erstellt. Diese PHP 7-Bauten enthalten Zend OPcache.

1 Vorbemerkung

Ich werde PHP 7 installieren, das sich zum Zeitpunkt des Schreibens in der Beta befindet. Bitte beachten Sie, dass PHP-FPM sowohl auf Apache- als auch auf Nginx-Servern verwendet werden kann, während FastCGI nur für Apache-Server verfügbar ist.

Bei älteren PHP-Versionen waren PHP-FPM und FastCGI gegenseitig ausschließend, sodass ein FPM- und ein FastCGI-Binary separat erstellt werden mussten. Mit PHP 7 kann ein einzelnes Binary, das den FPM- und FCGI-Modus unterstützt, erstellt werden.

2 PHP 7 mit PHP-FPM und Fastcgi kompilieren

Laden Sie PHP 7 von Github herunter und entpacken Sie es:

mkdir -p /opt/php-7.0.32  
mkdir /usr/local/src/php7-build  
cd /usr/local/src/php7-build  
wget http://de2.php.net/get/php-7.0.32.tar.bz2/from/this/mirror -O php-7.0.32.tar.bz2  
tar jxf php-7.0.32.tar.bz2
cd php-7.0.32/

Installieren Sie die Voraussetzungen für den Bau von PHP 7 und den Nano-Editor, den ich verwenden werde, um die Konfigurationsdateien zu bearbeiten:

apt-get install build-essential nano
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

(Der letzte Befehl ist erforderlich, wenn Sie PHP mit –with-imap bauen, da ./configure sonst mit dem folgenden Fehler stoppt:

checking for crypt in -lcrypt... yes  
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.  
root@server1:/usr/local/src/php5-build/php-7.0.32#

)

Konfigurieren und bauen Sie PHP 7.0.0 wie folgt (Sie können den ./configure-Befehl nach Ihren Bedürfnissen anpassen, sehen Sie sich an

./configure --help

um alle verfügbaren Optionen zu sehen; wenn Sie einen anderen ./configure-Befehl verwenden, ist es möglich, dass zusätzliche Bibliotheken erforderlich sind oder der Bauprozess fehlschlägt):

./configure --prefix=/opt/php-7.0.32 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm

Der letzte Schalter (–enable-fpm) stellt sicher, dass diese PHP-Version mit PHP-FPM funktioniert.

make  
make install

Kopieren Sie php.ini und php-fpm.conf an die richtigen Stellen:

cp /usr/local/src/php7-build/php-7.0.32/php.ini-production /opt/php-7.0.32/lib/php.ini
cp /opt/php-7.0.32/etc/php-fpm.conf.default /opt/php-7.0.32/etc/php-fpm.conf  
cp /opt/php-7.0.32/etc/php-fpm.d/www.conf.default /opt/php-7.0.32/etc/php-fpm.d/www.conf

Öffnen Sie /opt/php-7.0.32/etc/php-fpm.conf und passen Sie die folgende Einstellung an (entfernen Sie das ; vor der pid-Zeile):

nano /opt/php-7.0.32/etc/php-fpm.conf
[...]  
pid = run/php-fpm.pid  
[...]

Öffnen Sie dann /opt/php-7.0.32/etc/php-fpm.d/www.conf und passen Sie die Listen-Zeile an, Sie müssen einen unbenutzten Port verwenden (z.B. 8999; Port 9000 könnte bereits von Debians Standard-PHP-FPM verwendet werden):

nano /opt/php-7.0.32/etc/php-fpm.d/www.conf
[...]  
listen = 127.0.0.1:8999  
[...]

3 Erstellen Sie das Init-Skript und die systemd-Einheitendatei

Debian unterstützt Systemd sowie die traditionellen Init-Skripte. Zuerst werde ich ein Init-Skript für den php-fpm-Dienst erstellen und dann eine systemd-Einheit erstellen.

Zuerst erstellen Sie ein Init-Skript für PHP-FPM:

nano /etc/init.d/php-7.0.32-fpm
#! /bin/sh  
### BEGIN INIT INFO  
# Provides:          php-7.0.32-fpm  
# Required-Start:    $all  
# Required-Stop:     $all  
# Default-Start:     2 3 4 5  
# Default-Stop:      0 1 6  
# Short-Description: startet php-7.0.32-fpm  
# Description:       startet den PHP FastCGI Process Manager-Daemon  
### END INIT INFO  
php_fpm_BIN=/opt/php-7.0.32/sbin/php-fpm  
php_fpm_CONF=/opt/php-7.0.32/etc/php-fpm.conf  
php_fpm_PID=/opt/php-7.0.32/var/run/php-fpm.pid  
php_opts="--fpm-config $php_fpm_CONF"  
wait_for_pid () {  
        try=0  
        while test $try -lt 35 ; do  
                case "$1" in  
                        'created')  
                        if [ -f "$2" ] ; then  
                                try=''  
                                break  
                        fi  
                        ;;  
                        'removed')  
                        if [ ! -f "$2" ] ; then  
                                try=''  
                                break  
                        fi  
                        ;;  
                esac  
                echo -n .  
                try=`expr $try + 1`  
                sleep 1  
done  
}  
case "$1" in  
        start)  
                echo -n "Starte php-fpm "  
                $php_fpm_BIN $php_opts  
                if [ "$?" != 0 ] ; then  
                        echo " fehlgeschlagen"  
                        exit 1  
                fi  
                wait_for_pid created $php_fpm_PID  
                if [ -n "$try" ] ; then  
                        echo " fehlgeschlagen"  
                        exit 1  
                else  
                        echo " erledigt"  
                fi  
        ;;  
        stop)  
                echo -n "Beende php-fpm "  
                if [ ! -r $php_fpm_PID ] ; then  
                        echo "Warnung, keine PID-Datei gefunden - php-fpm läuft nicht?"  
                        exit 1  
                fi  
                kill -QUIT `cat $php_fpm_PID`  
                wait_for_pid removed $php_fpm_PID  
                if [ -n "$try" ] ; then  
                        echo " fehlgeschlagen. Verwenden Sie force-exit"  
                        exit 1  
                else  
                        echo " erledigt"  
                       echo " erledigt"  
                fi  
        ;;  
        force-quit)  
                echo -n "Beende php-fpm "  
                if [ ! -r $php_fpm_PID ] ; then  
                        echo "Warnung, keine PID-Datei gefunden - php-fpm läuft nicht?"  
                        exit 1  
                fi  
                kill -TERM `cat $php_fpm_PID`  
                wait_for_pid removed $php_fpm_PID  
                if [ -n "$try" ] ; then  
                        echo " fehlgeschlagen"  
                        exit 1  
                else  
                        echo " erledigt"  
                fi  
        ;;  
        restart)  
                $0 stop  
                $0 start  
        ;;  
        reload)  
                echo -n "Lade Dienst php-fpm neu "  
                if [ ! -r $php_fpm_PID ] ; then  
                        echo "Warnung, keine PID-Datei gefunden - php-fpm läuft nicht?"  
                        exit 1  
                fi  
                kill -USR2 `cat $php_fpm_PID`  
                echo " erledigt"  
        ;;  
        *)  
                echo "Verwendung: $0 {start|stop|force-quit|restart|reload}"  
                exit 1  
        ;;  
esac

Machen Sie das Init-Skript ausführbar und erstellen Sie die Systemstartlinks:

chmod 755 /etc/init.d/php-7.0.32-fpm  
insserv php-7.0.32-fpm

Und jetzt erstellen Sie die systemd-Einheitendatei

nano /lib/systemd/system/php-7.0.32-fpm.service

mit folgendem Inhalt:

[Unit]  
Description=Der PHP 7 FastCGI Process Manager  
After=network.target  
  
[Service]  
Type=simple  
PIDFile=/opt/php-7.0.32/var/run/php-fpm.pid  
ExecStart=/opt/php-7.0.32/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.0.32/etc/php-fpm.conf  
ExecReload=/bin/kill -USR2 $MAINPID  
  
[Install]  
WantedBy=multi-user.target

Aktivieren Sie den Dienst und laden Sie systemd neu:

systemctl enable php-7.0.32-fpm.service  
systemctl daemon-reload

Starten Sie schließlich PHP-FPM.

Für Systeme mit traditionellem Init-System führen Sie aus:

/etc/init.d/php-7.0.32-fpm start

Das Ergebnis sollte sein:

/etc/init.d/php-7.0.32-fpm start  
Starte php-fpm erledigt

Auf Servern, die systemd verwenden, verwenden Sie stattdessen diesen Befehl:

systemctl start php-7.0.32-fpm.service

Um den Zend OPcache zu aktivieren, öffnen Sie /opt/php-7.0.32/lib/php.ini…

nano /opt/php-7.0.32/lib/php.ini

… und fügen Sie die folgende Zeile am Ende hinzu:

[...]  
zend_extension=opcache.so

Die Memcache- und APCu-Erweiterungen können derzeit nicht auf PHP 7 installiert werden, daher werde ich ihre Installation vorerst überspringen. Ich werde das Tutorial später aktualisieren, wenn die PECL-Erweiterungen mit PHP 7 kompatibel sind.

Testen Sie die PHP-Version:

cd /opt/php-7.0.32/bin  
./php --version

Die Ausgabe sollte ähnlich diesem Screenshot sein.

Bitte beachten Sie: Der Screenshot stammt von PHP 7.0.0, das Tutorial wird kontinuierlich für neue PHP 7-Versionen aktualisiert, aber wir machen nicht jedes Mal neue Screenshots, sodass die PHP 7-Version, die Sie auf Ihrem Server sehen, wahrscheinlich neuer ist. Die aktuelle Version dieses Tutorials ist für php-7.0.32.

4 Aktivieren Sie PHP 7 in ISPConfig

In ISPConfig 3 können Sie die neue PHP-Version unter System > Zusätzliche PHP-Versionen konfigurieren. Auf der Registerkarte Name fügen Sie einfach einen Namen für die PHP-Version ein (z.B. PHP 7.0.0) - diese PHP-Version wird unter diesem Namen in den Website-Einstellungen in ISPConfig aufgeführt:

Gehen Sie zur Registerkarte FastCGI-Einstellungen und füllen Sie die Felder wie folgt aus:

Pfad zur PHP FastCGI-Binärdatei: /opt/php-7.0.32/bin/php-cgi  
Pfad zum php.ini-Verzeichnis: /opt/php-7.0.32/lib

Gehen Sie dann zur Registerkarte PHP-FPM-Einstellungen und füllen Sie die Felder wie folgt aus:

Pfad zum PHP-FPM-Init-Skript: php-7.0.32-fpm  
Pfad zum php.ini-Verzeichnis: /opt/php-7.0.32/lib  
Pfad zum PHP-FPM-Poolverzeichnis: /opt/php-7.0.32/etc/php-fpm.d  

5 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.