PHP Versions · 6 min read · Nov 03, 2025
Come utilizzare più versioni di PHP (PHP-FPM e FastCGI) con ISPConfig 3 (Ubuntu 12.04 LTS)
Come utilizzare più versioni di PHP (PHP-FPM e FastCGI) con ISPConfig 3 (Ubuntu 12.04 LTS)
Versione 1.0
Autore: Falko Timme
Seguimi su Twitter
Dal rilascio di ISPConfig 3.0.5, è possibile utilizzare più versioni di PHP su un server e selezionare la versione PHP ottimale per un sito web. Questa funzionalità funziona con PHP-FPM (a partire da PHP 5.3) e FastCGI (tutte le versioni PHP 5.x). Questo tutorial mostra come costruire PHP 5.3 e PHP 5.4 come versione PHP-FPM e FastCGI su un server Ubuntu 12.04. Queste versioni di PHP possono essere utilizzate insieme al PHP predefinito (installato tramite apt) in ISPConfig.
Non fornisco alcuna garanzia che questo funzioni per te!
1 Nota preliminare
Installerò PHP 5.3.22 e PHP 5.4.12, le ultime versioni di PHP 5.3 e 5.4 al momento della scrittura. Mostrerò anche come costruire alcune estensioni PHP aggiuntive come APC, memcache, memcached e ioncube.
Si prega di notare che PHP-FPM può essere utilizzato sia su server Apache che nginx, mentre FastCGI è disponibile solo per server Apache.
PHP-FPM e FastCGI sono mutuamente esclusivi in PHP 5.3 e 5.4, ecco perché mostro due modi per costruire PHP, uno per PHP-FPM, uno per FastCGI, tuttavia puoi compilare PHP due volte per ottenere entrambi, una volta con –enable-fpm e una volta con –enable-cgi (assicurati di utilizzare directory di base diverse, come /opt/php-5.3.22 per PHP-FPM e /opt/phpfcgi-5.3.22 per FastCGI).
2 Costruzione di PHP 5.3.22 (PHP-FPM)
Scarica ed estrai 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/Installa i prerequisiti per costruire PHP5:
apt-get install build-essential apt-get build-dep php5apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-devln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a(L’ultimo comando è necessario se costruisci PHP con –with-imap, perché altrimenti ./configure si fermerà con il seguente errore:
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#
)
Configura e costruisci PHP 5.3.22 come segue (puoi adattare il comando ./configure alle tue esigenze, dai un’occhiata a
./configure --helpper vedere tutte le opzioni disponibili; se utilizzi un comando ./configure diverso, è possibile che siano necessarie librerie aggiuntive, o il processo di costruzione fallirà):
./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
L’ultimo switch ( –enable-fpm) assicura che questa versione di PHP funzioni con PHP-FPM.
make
make install
Copia php.ini e php-fpm.conf nelle posizioni corrette:
cp /usr/local/src/php5-build/php-5.3.22/php.ini-production /opt/php-5.3.22/lib/php.inicp /opt/php-5.3.22/etc/php-fpm.conf.default /opt/php-5.3.22/etc/php-fpm.confApri /opt/php-5.3.22/etc/php-fpm.conf e adatta le seguenti impostazioni - nella riga listen devi usare una porta non utilizzata (ad es. 8999; la porta 9000 potrebbe essere già in uso dal PHP-FPM predefinito di Ubuntu), e devi aggiungere la riga include=/opt/php-5.3.22/etc/pool.d/*.conf alla fine:
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 |
Crea la directory del pool per PHP-FPM:
mkdir /opt/php-5.3.22/etc/pool.dSuccessivamente crea uno script di init per 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 |
Rendi lo script di init eseguibile e crea i collegamenti di avvio del sistema:
chmod 755 /etc/init.d/php-5.3.22-fpm
update-rc.d php-5.3.22-fpm defaults
Infine avvia PHP-FPM:
/etc/init.d/php-5.3.22-fpm startFinché non ci sono pool in /opt/php-5.3.22/etc/pool.d, riceverai questo avviso che puoi ignorare:
root@server1:/usr/local/src/php5-build/php-5.3.22# /etc/init.d/php-5.3.22-fpm start
Starting 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#
Questo è tutto - se vuoi, puoi ora installare alcuni moduli aggiuntivi come APC, memcache, memcached e ioncube.
I moduli APC, memcache e memcached possono essere installati tramite PEAR che dobbiamo installare e inizializzare prima:
apt-get -y install php-pearcd /opt/php-5.3.22/etcpecl -C ./pear.conf update-channelsAPC può ora essere installato come segue:
pecl -C ./pear.conf install apcAccetta tutti i valori predefiniti. Successivamente, apri /opt/php-5.3.22/lib/php.ini…
vi /opt/php-5.3.22/lib/php.ini… e aggiungi la riga extension=apc.so alla fine del file (puoi anche configurare alcune impostazioni aggiuntive di APC):
| [...] 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’estensione memcache può essere installata come segue:
pecl -C ./pear.conf install memcache Apri /opt/php-5.3.22/lib/php.ini…
vi /opt/php-5.3.22/lib/php.ini… e aggiungi la riga extension=memcache.so alla fine del file:
| [...] extension=memcache.so |
L’estensione memcached può essere installata come segue:
apt-get install libmemcached-devln -s /usr/include/libmemcached /usr/include/libmemcached-1.0pecl -C ./pear.conf install memcachedApri /opt/php-5.3.22/lib/php.ini…
vi /opt/php-5.3.22/lib/php.ini… e aggiungi la riga extension=memcached.so alla fine del file:
| [...] extension=memcached.so |
Il caricatore ionCube può essere installato come segue:
cd /tmpSuccessivamente scarica e decomprimi il pacchetto corretto del caricatore ionCube per la tua architettura (x86_64 o x86).
Per 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
Per x86:
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz
Procedi come segue:
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
Aggiungi la riga zend_extension = /opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so proprio all’inizio del file (prima della riga [PHP]):
| zend_extension = /opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so [PHP] [...] |
Ricarica PHP-FPM successivamente:
/etc/init.d/php-5.3.22-fpm reloadIn ISPConfig 3.0.5, puoi configurare la nuova versione di PHP sotto Sistema > Versioni PHP aggiuntive. Nella scheda Nome, devi solo compilare un nome per la versione PHP (ad es. PHP 5.3.22) - questa versione PHP sarà elencata sotto questo nome nelle impostazioni del sito web in ISPConfig:

Vai alla scheda Impostazioni PHP-FPM (la scheda Impostazioni FastCGI può essere lasciata vuota) e compila i campi come segue:

Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.