PHP Versions · 6 min read · Nov 03, 2025

Comment utiliser plusieurs versions de PHP (PHP-FPM & FastCGI) avec ISPConfig 3 (Ubuntu 12.04 LTS)

Comment utiliser plusieurs versions de PHP (PHP-FPM & FastCGI) avec ISPConfig 3 (Ubuntu 12.04 LTS)

Version 1.0
Auteur : Falko Timme
Suivez-moi sur Twitter

Depuis ISPConfig 3.0.5, il est possible d’utiliser plusieurs versions de PHP sur un serveur et de sélectionner la version PHP optimale pour un site web. Cette fonctionnalité fonctionne avec PHP-FPM (à partir de PHP 5.3) et FastCGI (toutes les versions PHP 5.x). Ce tutoriel montre comment construire PHP 5.3 et PHP 5.4 en tant que version PHP-FPM et FastCGI sur un serveur Ubuntu 12.04. Ces versions de PHP peuvent être utilisées avec la version PHP par défaut (installée via apt) dans ISPConfig.

Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

J’installerai PHP 5.3.22 et PHP 5.4.12, les dernières versions PHP 5.3 et 5.4 au moment de la rédaction de cet article. Je montrerai également comment construire quelques extensions PHP supplémentaires telles qu’APC, memcache, memcached et ioncube.

Veuillez noter que PHP-FPM peut être utilisé sur les serveurs Apache et nginx, tandis que FastCGI n’est disponible que pour les serveurs Apache.

PHP-FPM et FastCGI sont mutuellement exclusifs dans PHP 5.3 et 5.4, c’est pourquoi je montre deux façons de construire PHP, une pour PHP-FPM, une pour FastCGI, cependant, vous pouvez compiler PHP deux fois pour obtenir les deux, une fois avec –enable-fpm et une fois avec –enable-cgi (assurez-vous d’utiliser des répertoires de base différents, tels que /opt/php-5.3.22 pour PHP-FPM et /opt/phpfcgi-5.3.22 pour FastCGI).

2 Construction de PHP 5.3.22 (PHP-FPM)

Téléchargez et extrayez PHP 5.3.22 :

mkdir /opt/php-5.3.22
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de.php.net/get/php-5.3.22.tar.bz2/from/this/mirror -O php-5.3.22.tar.bz2
tar jxf php-5.3.22.tar.bz2

cd php-5.3.22/

Installez les prérequis pour construire PHP5 :

apt-get install build-essential 
apt-get build-dep php5
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

(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.
root@server1:/usr/local/src/php5-build/php-5.3.22#

)

Configurez et construisez PHP 5.3.22 comme suit (vous pouvez ajuster la commande ./configure selon 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.3.22 \
–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 \
–with-mhash \
–enable-zip \
–with-pcre-regex \
–with-mysql \
–with-pdo-mysql \
–with-mysqli \
–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 \
–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 emplacements corrects :

cp /usr/local/src/php5-build/php-5.3.22/php.ini-production /opt/php-5.3.22/lib/php.ini
cp /opt/php-5.3.22/etc/php-fpm.conf.default /opt/php-5.3.22/etc/php-fpm.conf

Ouvrez /opt/php-5.3.22/etc/php-fpm.conf et ajustez les paramètres suivants - dans la ligne listen, vous devez utiliser un port inutilisé (par exemple, 8999 ; le port 9000 pourrait déjà être utilisé par le PHP-FPM par défaut d’Ubuntu), et vous devez ajouter la ligne include=/opt/php-5.3.22/etc/pool.d/*.conf à la fin :

vi /opt/php-5.3.22/etc/php-fpm.conf

| [...] pid = run/php-fpm.pid [...] user = www-data group = www-data [...] listen = 127.0.0.1:8999 [...] include=/opt/php-5.3.22/etc/pool.d/*.conf |

Créez le répertoire de pool pour PHP-FPM :

mkdir /opt/php-5.3.22/etc/pool.d

Ensuite, créez un script d’initialisation pour PHP-FPM :

vi /etc/init.d/php-5.3.22-fpm

| #! /bin/sh ### BEGIN INIT INFO # Provides: php-5.3.22-fpm # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts php-5.3.22-fpm # Description: starts the PHP FastCGI Process Manager daemon ### END INIT INFO php_fpm_BIN=/opt/php-5.3.22/sbin/php-fpm php_fpm_CONF=/opt/php-5.3.22/etc/php-fpm.conf php_fpm_PID=/opt/php-5.3.22/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 "Starting php-fpm " $php_fpm_BIN $php_opts if [ "$?" != 0 ] ; then echo " failed" exit 1 fi wait_for_pid created $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Gracefully shutting down php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed. Use force-exit" exit 1 else echo " done" echo " done" fi ;; force-quit) echo -n "Terminating php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; restart) $0 stop $0 start ;; reload) echo -n "Reload service php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done" ;; *) echo "Usage: $0 {start|stop|force-quit|restart|reload}" exit 1 ;; esac |

Rendez le script d’initialisation exécutable et créez les liens de démarrage système :

chmod 755 /etc/init.d/php-5.3.22-fpm
update-rc.d php-5.3.22-fpm defaults

Enfin, démarrez PHP-FPM :

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

Tant qu’il n’y a pas de pools dans /opt/php-5.3.22/etc/pool.d, vous recevrez cet avertissement que vous pouvez ignorer :

root@server1:/usr/local/src/php5-build/php-5.3.22# /etc/init.d/php-5.3.22-fpm start
Démarrage de php-fpm [04-Mar-2013 14:58:41] WARNING: Nothing matches the include pattern ‘/opt/php-5.3.22/etc/pool.d/*.conf’ from /opt/php-5.3.22/etc/php-fpm.conf at line 512.
done
root@server1:/usr/local/src/php5-build/php-5.3.22#

C’est tout - si vous le souhaitez, vous pouvez maintenant installer quelques modules supplémentaires comme APC, memcache, memcached et ioncube.

Les modules APC, memcache et memcached peuvent être installés via PEAR que nous devons d’abord installer et initialiser :

apt-get -y install php-pear
cd /opt/php-5.3.22/etc
pecl -C ./pear.conf update-channels

APC peut maintenant être installé comme suit :

pecl -C ./pear.conf install apc

Acceptez toutes les valeurs par défaut. Ensuite, ouvrez /opt/php-5.3.22/lib/php.ini…

vi /opt/php-5.3.22/lib/php.ini

… et ajoutez la ligne extension=apc.so à la fin du fichier (vous pouvez également configurer quelques paramètres APC supplémentaires) :

| [...] extension=apc.so apc.enabled=1 apc.shm_size=128M apc.ttl=0 apc.user_ttl=600 apc.gc_ttl=600 apc.enable_cli=1 apc.mmap_file_mask=/tmp/apc.XXXXXX ;apc.mmap_file_mask=/dev/zero ;apc.shm_segments = 5 |

L’extension memcache peut être installée comme suit :

pecl -C ./pear.conf install memcache   

Ouvrez /opt/php-5.3.22/lib/php.ini…

vi /opt/php-5.3.22/lib/php.ini

… et ajoutez la ligne extension=memcache.so à la fin du fichier :

| [...] extension=memcache.so |

L’extension memcached peut être installée comme suit :

apt-get install libmemcached-dev
ln -s /usr/include/libmemcached /usr/include/libmemcached-1.0
pecl -C ./pear.conf install memcached

Ouvrez /opt/php-5.3.22/lib/php.ini…

vi /opt/php-5.3.22/lib/php.ini

… et ajoutez la ligne extension=memcached.so à la fin du fichier :

| [...] extension=memcached.so |

Le chargeur ionCube peut être installé comme suit :

cd /tmp

Ensuite, téléchargez et décompressez le bon package ionCube Loader pour votre architecture (x86_64 ou x86).

Pour x86_64 :

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfvz ioncube_loaders_lin_x86-64.tar.gz

Pour x86 :

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz

Procédez comme suit :

cp ioncube/ioncube_loader_lin_5.3.so /opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
vi /opt/php-5.3.22/lib/php.ini

Ajoutez la ligne zend_extension = /opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so tout au début du fichier (avant la ligne [PHP]) :

| zend_extension = /opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so [PHP] [...] |

Rechargez PHP-FPM ensuite :

/etc/init.d/php-5.3.22-fpm reload

Dans ISPConfig 3.0.5, vous pouvez configurer la nouvelle version PHP sous Système > Versions PHP supplémentaires. Dans l’onglet Nom, vous remplissez simplement un nom pour la version PHP (par exemple, PHP 5.3.22) - cette version PHP sera listée sous ce nom dans les paramètres du site web dans ISPConfig :

Allez à l’onglet Paramètres PHP-FPM (l’onglet Paramètres FastCGI peut rester vide) et remplissez les champs comme suit :

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.