Debian 9 est livré avec PHP 7.0 comme version PHP par défaut. Les principales versions de PHP ne sont pas compatibles à 100 % entre elles, de sorte qu'un site Web peut nécessiter une version plus récente ou plus ancienne de PHP pour fonctionner. ISPConfig le prend en charge pour utiliser plusieurs versions de PHP sur le même serveur, la version de PHP peut être sélectionnée pour chaque site Web individuellement dans les paramètres du site Web. Ce tutoriel montre comment installer PHP 7.1, 7.2 et 5.6 en mode FPM et FCGI avec PHP 7.0 sur un serveur Debian 9. Les versions PHP supplémentaires sont installées dans le dossier /opt, leur installation n'affecte donc pas la version PHP par défaut.
MISE À JOUR :Il est recommandé d'installer des versions PHP supplémentaires sur Debian et Ubuntu à partir de packages maintenant. Le tutoriel peut être trouvé ici :https://www.howtoforge.com/tutorial/how-to-install-php-7-for-ispconfig-3-from-debian-packages-on-debian-8-and-9 /
1 Remarque préliminaire
Je vais installer PHP 7.1, 7.2 et 5.6. Veuillez noter que PHP-FPM peut être utilisé à la fois sur les serveurs Apache et Nginx, tandis que FastCGI n'est disponible que pour les serveurs Apache.
2 Installer les prérequis
Installez les prérequis pour compiler PHP et l'éditeur nano que j'utiliserai pour éditer les fichiers de configuration :
apt-get install build-essential nano
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dev libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng-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
cd /usr/include
ln -s x86_64-linux-gnu/curl
(La dernière commande est nécessaire si vous construisez PHP avec --with-imap, car sinon ./configure s'arrêtera avec l'erreur suivante :
checking for crypt in -lcrypt... yes
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
[email protected]:/usr/local/src/php5-build/php-7.1.14#
)
3 Compiler PHP 7.1 en tant que PHP-FPM et Fastcgi
Téléchargez et extrayez l'archive PHP :
mkdir -p /opt/php-7.1
mkdir /usr/local/src/php7.1-build
cd /usr/local/src/php7.1-build
wget http://de2.php.net/get/php-7.1.14.tar.bz2/from/this/mirror -O php-7.1.14.tar.bz2
tar jxf php-7.1.14.tar.bz2
cd php-7.1.14/
Configurez et compilez PHP 7.1 comme suit (vous pouvez ajuster la commande ./configure à vos besoins, jetez un œil à
./configure --help
pour voir toutes les options disponibles ; si vous utilisez une commande ./configure différente, il est possible que des bibliothèques supplémentaires soient requises ou que le processus de construction échoue) :
./configure --prefix=/opt/php-7.1 --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
Le dernier commutateur (--enable-fpm) garantit que cette version de PHP fonctionnera avec PHP-FPM.
make
make install
Copiez php.ini et php-fpm.conf aux bons emplacements :
cp /usr/local/src/php7.1-build/php-7.1/php.ini-production /opt/php-7.1/lib/php.ini
cp /opt/php-7.1/etc/php-fpm.conf.default /opt/php-7.1/etc/php-fpm.conf
cp /opt/php-7.1/etc/php-fpm.d/www.conf.default /opt/php-7.1/etc/php-fpm.d/www.conf
Ouvrez /opt/php-7.1/etc/php-fpm.conf et ajustez le paramètre suivant (supprimez le ; devant la ligne pid) :
nano /opt/php-7.1/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...]
Ouvrez ensuite /opt/php-7.1/etc/php-fpm.d/www.conf et ajustez la ligne d'écoute, vous devez utiliser un port inutilisé (par exemple, 8999 ; le port 9000 peut déjà être utilisé par le PHP-FPM par défaut de Debian) :
nano /opt/php-7.1/etc/php-fpm.d/www.conf
[...] listen = 127.0.0.1:8999 [...]
3.1 Créer le fichier d'unité systemd
Ensuite, nous allons créer le fichier d'unité système qui est utilisé pour démarrer et arrêter le démon PHP-FPM.
nano /lib/systemd/system/php-7.1-fpm.service
avec le contenu suivant :
[Unit]
Description=The PHP 7.1 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/opt/php-7.1/var/run/php-fpm.pid
ExecStart=/opt/php-7.1/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.1/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
Activez le service et rechargez systemd :
systemctl enable php-7.1-fpm.service
systemctl daemon-reload
Enfin, lancez PHP-FPM.
systemctl start php-7.1-fpm.service
Pour activer Zend OPcache, ouvrez /opt/php-7.1/lib/php.ini...
nano /opt/php-7.1/lib/php.ini
... et ajoutez la ligne suivante à la fin :
[...] zend_extension=opcache.so
3.2 Activer Memcache (facultatif)
Dans ce chapitre, je vais compiler et activer l'extension PHP Memcached.
La première étape consiste à installer le package libmemcached-dev à partir de Debian.
apt-get install libmemcached-dev
Créez ensuite un répertoire, téléchargez l'extension PHP memcache depuis Github, décompressez l'archive et entrez le répertoire contenant les fichiers décompressés.
mkdir /usr/local/src/php7.1-build/php-memcache
cd /usr/local/src/php7.1-build/php-memcache
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
unzip php7.zip
cd php-memcached-php7
Préparez les sources en exécutant la commande phpize depuis PHP 7.1.
/opt/php-7.1/bin/phpize
Configurez et créez l'extension PHP Memcache.
./configure --with-php-config=/opt/php-7.1/bin/php-config
make
make install
Pour activer l'extension Memcache, ouvrez /opt/php-7.1/lib/php.ini...
nano /opt/php-7.1/lib/php.ini
... et ajoutez la ligne suivante à la fin :
[...] extension=memcached.so
3.3 Installer l'extension xDebug (facultatif)
Le module xDebug est une extension de débogage pour PHP. L'installation est facultative.
Installez xDebug avec ces commandes.
cd /opt/php-7.1/etc
../bin/pecl -C ./pear.conf update-channels
../bin/pecl -C ./pear.conf install xdebug
Modifiez ensuite le fichier php.ini avec un éditeur :
nano /opt/php-7.1/lib/php.ini
et ajoutez la ligne suivante à la fin du fichier :
zend_extension=/opt/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Redémarrez enfin le démon php-fpm :
systemctl start php-7.1-fpm.service
Testez la version PHP :
cd /opt/php-7.1/bin
./php --version
Le résultat devrait ressembler à cette capture d'écran.
Veuillez noter : La capture d'écran provient de PHP 7.1.14, le didacticiel est mis à jour en permanence pour les nouvelles versions de PHP, mais nous ne prenons pas de nouvelles captures d'écran à chaque fois. La version de PHP que vous verrez sur votre serveur peut donc être plus récente. La version actuelle de ce tutoriel est pour php-7.1.14.
3.4 Activer PHP 7.1 dans ISPConfig
Dans ISPConfig 3.1, vous pouvez configurer la nouvelle version PHP sous Système> Versions PHP supplémentaires. Dans l'onglet Nom, il vous suffit de saisir un nom pour la version de PHP (par exemple, PHP 7.1) - cette version de PHP sera répertoriée sous ce nom dans les paramètres du site Web dans ISPConfig :
Accédez à l'onglet Paramètres FastCGI et remplissez les champs comme suit :
Path to the PHP FastCGI binary: /opt/php-7.1/bin/php-cgi
Path to the php.ini directory: /opt/php-7.1/lib
Accédez ensuite à l'onglet Paramètres PHP-FPM et remplissez les champs comme suit :
Path to the PHP-FPM init script: php-7.1-fpm
Path to the php.ini directory: /opt/php-7.1/lib
Path to the PHP-FPM pool directory: /opt/php-7.1/etc/php-fpm.d
4 Compiler PHP 7.2 en tant que PHP-FPM et Fastcgi
Téléchargez et extrayez PHP de php.net et décompressez le fichier tar.bz2 :
mkdir -p /opt/php-7.2
mkdir /usr/local/src/php7.2-build
cd /usr/local/src/php7.2-build
wget http://de2.php.net/get/php-7.2.2.tar.bz2/from/this/mirror -O php-7.2.2.tar.bz2
tar jxf php-7.2.2.tar.bz2
cd php-7.2.2/
Configurez et compilez PHP 7.2 comme suit (vous pouvez ajuster la commande ./configure à vos besoins, jetez un œil à
./configure --help
pour voir toutes les options disponibles ; si vous utilisez une commande ./configure différente, il est possible que des bibliothèques supplémentaires soient requises ou que le processus de construction échoue) :
./configure --prefix=/opt/php-7.2 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --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 --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
Le dernier commutateur (--enable-fpm) garantit que cette version de PHP fonctionnera avec PHP-FPM.
make
make install
Copiez php.ini et php-fpm.conf aux bons emplacements :
cp /usr/local/src/php7.2-build/php-7.2.2/php.ini-production /opt/php-7.2/lib/php.ini
cp /opt/php-7.2/etc/php-fpm.conf.default /opt/php-7.2/etc/php-fpm.conf
cp /opt/php-7.2/etc/php-fpm.d/www.conf.default /opt/php-7.2/etc/php-fpm.d/www.conf
Ouvrez /opt/php-7.2/etc/php-fpm.conf et ajustez le paramètre suivant (supprimez le ; devant la ligne pid) :
nano /opt/php-7.2/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...]
Ouvrez ensuite /opt/php-7.2/etc/php-fpm.d/www.conf et ajustez la ligne d'écoute, vous devez utiliser un port inutilisé (par exemple, 8998 ; le port 9000 peut déjà être utilisé par le PHP-FPM par défaut de Debian) :
nano /opt/php-7.2/etc/php-fpm.d/www.conf
[...] listen = 127.0.0.1:8998 [...]
4.1 Créer le fichier d'unité systemd
Ensuite, nous allons créer le fichier d'unité système qui est utilisé pour démarrer et arrêter le démon PHP-FPM.
nano /lib/systemd/system/php-7.2-fpm.service
avec le contenu suivant :
[Unit]
Description=The PHP 7.2 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/opt/php-7.2/var/run/php-fpm.pid
ExecStart=/opt/php-7.2/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.2/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
Activez le service et rechargez systemd :
systemctl enable php-7.2-fpm.service
systemctl daemon-reload
Enfin, lancez PHP-FPM.
systemctl start php-7.2-fpm.service
Pour activer Zend OPcache, ouvrez /opt/php-7.2/lib/php.ini...
nano /opt/php-7.2/lib/php.ini
... et ajoutez la ligne suivante à la fin :
[...] zend_extension=opcache.so
4.2 Activer Memcache (facultatif)
Dans ce chapitre, je vais compiler et activer l'extension PHP Memcached.
La première étape consiste à installer le package libmemcached-dev à partir de Debian.
apt-get install libmemcached-dev
Créez ensuite un répertoire, téléchargez l'extension PHP Memcache depuis Github, décompressez l'archive et entrez dans le répertoire contenant les fichiers décompressés.
mkdir /usr/local/src/php7.2-build/php-memcache
cd /usr/local/src/php7.2-build/php-memcache
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
unzip php7.zip
cd php-memcached-php7
Préparez les sources en exécutant la commande phpize depuis PHP 7.2.
/opt/php-7.2/bin/phpize
Configurez et créez l'extension PHP Memcache.
./configure --with-php-config=/opt/php-7.2/bin/php-config
make
make install
Pour activer l'extension Memcache, ouvrez /opt/php-7.2/lib/php.ini...
nano /opt/php-7.2/lib/php.ini
... et ajoutez la ligne suivante à la fin :
[...] extension=memcached.so
4.3 Installer l'extension xDebug (facultatif)
Le module xDebug est une extension de débogage pour PHP. L'installation est facultative.
Installez xDebug avec ces commandes.
cd /opt/php-7.2/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install xdebug
Modifiez ensuite le fichier php.ini avec un éditeur :
nano /opt/php-7.2/lib/php.ini
et ajoutez la ligne suivante à la fin du fichier :
zend_extension=/opt/php-7.2/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
Redémarrez enfin le démon php-fpm :
systemctl start php-7.2-fpm.service
Testez la version PHP :
cd /opt/php-7.2/bin
./php --version
Le résultat devrait ressembler à cette capture d'écran.
Veuillez noter : La capture d'écran provient de PHP 7.2.2, le didacticiel est mis à jour en permanence pour les nouvelles versions de PHP, mais nous ne prenons pas de nouvelles captures d'écran à chaque fois. La version de PHP que vous verrez sur votre serveur peut donc être plus récente. La version actuelle de ce tutoriel est pour php-7.2.2.
4.4 Activer PHP 7.2 dans ISPConfig
Dans ISPConfig 3.1, vous pouvez configurer la nouvelle version PHP sous Système> Versions PHP supplémentaires. Dans l'onglet Nom, il vous suffit de saisir un nom pour la version de PHP (par exemple, PHP 7.2) - cette version de PHP sera répertoriée sous ce nom dans les paramètres du site Web dans ISPConfig :
Accédez à l'onglet Paramètres FastCGI et remplissez les champs comme suit :
Path to the PHP FastCGI binary: /opt/php-7.2/bin/php-cgi
Path to the php.ini directory: /opt/php-7.2/lib
Accédez ensuite à l'onglet Paramètres PHP-FPM et remplissez les champs comme suit :
Path to the PHP-FPM init script: php-7.2-fpm
Path to the php.ini directory: /opt/php-7.2/lib
Path to the PHP-FPM pool directory: /opt/php-7.2/etc/php-fpm.d
5 Compiler PHP 5.6 en tant que PHP-FPM et Fastcgi
Téléchargez PHP et décompressez l'archive tar.bz2 :
mkdir -p /opt/php-5.6
mkdir /usr/local/src/php5.6-build
cd /usr/local/src/php5.6-build
wget http://de2.php.net/get/php-5.6.33.tar.bz2/from/this/mirror -O php-5.6.33.tar.bz2
tar jxf php-5.6.33.tar.bz2
La version OpenSSL dans Debian 9 est trop récente pour PHP 5.6, nous devrons donc compiler une version plus ancienne dans /opt/openssl pour l'utiliser avec PHP 5.6.
cd /tmp
wget "https://www.openssl.org/source/old/1.0.1/openssl-1.0.1t.tar.gz"
tar xzf openssl-1.0.1t.tar.gz
cd openssl-1.0.1t
./config shared --prefix=/opt/openssl
make -j $(nproc) && make install
ln -s /opt/openssl/lib /opt/openssl/lib/x86_64-linux-gnu
wget -O /opt/openssl/ssl/cert.pem "http://curl.haxx.se/ca/cacert.pem"
Créez un lien symbolique pour que PHP trouve les bibliothèques freetype, libcrypto et libssl.
mkdir /usr/include/freetype2/freetype
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h
ln -s /opt/openssl/lib/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/
ln -s /opt/openssl/lib/libssl.so.1.0.0 /usr/lib/x86_64-linux-gnu/
ln -fs /opt/openssl /usr/local/ssl
Entrez le dossier qui contient les fichiers source PHP décompressés.
cd /usr/local/src/php5.6-build/php-5.6.33/
Configurez et compilez PHP 5.6 comme suit (vous pouvez ajuster la commande ./configure à vos besoins, jetez un œil à
./configure --help
pour voir toutes les options disponibles ; si vous utilisez une commande ./configure différente, il est possible que des bibliothèques supplémentaires soient requises ou que le processus de construction échoue) :
./configure --prefix=/opt/php-5.6 --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-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=/opt/openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm
Le dernier commutateur (--enable-fpm) garantit que cette version de PHP fonctionnera avec PHP-FPM.
make
make install
Copiez php.ini et php-fpm.conf aux bons emplacements :
cp /usr/local/src/php5.6-build/php-5.6.33/php.ini-production /opt/php-5.6/lib/php.ini
cp /opt/php-5.6/etc/php-fpm.conf.default /opt/php-5.6/etc/php-fpm.conf
mkdir -p /opt/php-5.6/etc/php-fpm.d
Ouvrez /opt/php-5.6/etc/php-fpm.conf et ajustez le paramètre suivant :
nano /opt/php-5.6/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...] user = www-data group = www-data [...] listen = 127.0.0.1:8997 [...] include=/opt/php-5.6/etc/php-fpm.d/*.conf
5.1 Créer le fichier d'unité systemd
Ensuite, nous allons créer le fichier d'unité système qui est utilisé pour démarrer et arrêter le démon PHP-FPM.
nano /lib/systemd/system/php-5.6-fpm.service
avec le contenu suivant :
[Unit]
Description=The PHP 5.6 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/opt/php-5.6/var/run/php-fpm.pid
ExecStart=/opt/php-5.6/sbin/php-fpm --nodaemonize --fpm-config /opt/php-5.6/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
Activez le service et rechargez systemd :
systemctl enable php-5.6-fpm.service
systemctl daemon-reload
Enfin, lancez PHP-FPM.
systemctl start php-5.6-fpm.service
Pour activer Zend OPcache, ouvrez /opt/php-5.6/lib/php.ini...
nano /opt/php-5.6/lib/php.ini
... et ajoutez la ligne suivante à la fin :
[...] zend_extension=opcache.so
5.2 Activer Memcache (facultatif)
Dans ce chapitre, je vais compiler et activer l'extension PHP Memcached.
La première étape consiste à installer le package libmemcached-dev à partir de Debian.
apt-get install libmemcached-dev
Exécutez ensuite ces commandes pour créer l'extension Memcache
cd /opt/php-5.6/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install memcache
Pour activer l'extension Memcache, ouvrez /opt/php-5.6/lib/php.ini...
nano /opt/php-5.6/lib/php.ini
... et ajoutez la ligne suivante à la fin :
[...] extension=memcache.so
Redémarrez enfin le démon php-fpm :
systemctl start php-5.6-fpm.service
Testez la version PHP :
cd /opt/php-5.6/bin
./php --version
Le résultat devrait ressembler à cette capture d'écran.
Veuillez noter : La capture d'écran provient de PHP 5.6.33, le didacticiel est mis à jour en permanence pour les nouvelles versions de PHP, mais nous ne prenons pas de nouvelles captures d'écran à chaque fois. La version de PHP que vous verrez sur votre serveur peut donc être plus récente. La version actuelle de ce tutoriel est pour php-5.6.33.
5.4 Activer PHP 5.6 dans ISPConfig
Dans ISPConfig 3.1, vous pouvez configurer la nouvelle version PHP sous Système> Versions PHP supplémentaires. Dans l'onglet Nom, il vous suffit de saisir un nom pour la version de PHP (par exemple, PHP 5.6) - cette version de PHP sera répertoriée sous ce nom dans les paramètres du site Web dans ISPConfig :
Accédez à l'onglet Paramètres FastCGI et remplissez les champs comme suit :
Path to the PHP FastCGI binary: /opt/php-5.6/bin/php-cgi
Path to the php.ini directory: /opt/php-5.6/lib
Accédez ensuite à l'onglet Paramètres PHP-FPM et remplissez les champs comme suit :
Path to the PHP-FPM init script: php-5.6-fpm
Path to the php.ini directory: /opt/php-5.6/lib
Path to the PHP-FPM pool directory: /opt/php-5.6/etc/php-fpm.d
6 liens
- PHP :http://www.php.net/
- ISPConfig :http://www.ispconfig.org/
- Debian :http://www.debian.org/