Ultimo aggiornamento: 17 settembre 2020

Questa pagina descrive come attivare due versioni diverse di php-fpm nello stesso ambiente.
Ad esempio, php-fpm è già attivo con la versione php-5.5.x, andremo ad attivare la nuova 5.6.15
con una sessione dedicata.

Compiliamo ad esempio la versione php 5.6

$ cd php-5.6.15/
$ ./configure --enable-fpm --with-config-file-path=/usr/local/lib-5.6/
$ make

Installiamo il binario fpm in /usr/local/sbin con un nome diverso da quello già in produzione
$ cp -p php-5.6.x/sapi/fpm/php-fpm /usr/local/sbin/__php-fpm.5.6

Lo script chiamato php-config con il nome della nuova versione ci permetterà di individuare la versione nuova delle API.

$ cp -p php-5.6.x/scripts/php-config /usr/local/bin/php-config-5.6
$ chmod +x /usr/local/bin/php-config-5.6

Copiamo anche la directory /usr/local/lib dove è presente il file php.ini con un nuovo nome,
in questo modo potremo sempre fare delle modifiche dedicate alla nostra installazione.

$ mkdir /usr/local/lib-5.6
$ cp -p /usr/local/lib/php.ini /usr/local/lib-5.6/
$ cp -pr /usr/local/lib/php /usr/local/lib-5.6/

Preparazione del file /etc/init.d/php5.6-fpm
Con la distribuzione di php viene inserito nell'archivio un file ad installare nella directory
/etc/init.d/, chiamato php-fpm.

Considerando che questo file è già in uso, copiamo esso con un nuovo nome,

$ cp -p /etc/init.d/php-fpm /etc/init.d/php-5.6-fpm

Editeremo poi queste variabili che si trovano nelle prime righe dello script

php_fpm_BIN=${exec_prefix}/sbin/__php-fpm.5.6
php_fpm_CONF=${prefix}/etc/php-fpm-5.6.conf
php_fpm_PID=${prefix}/var/run/php-fpm-5.6.pid

Per il file di configurazione fpm ( generalmente posizionato in /usr/local/etc/ ),
creiamo una nuova copia e procediamo con la configurazione di esso.

$ cp -p php-fpm.conf php-fpm-5.6.conf

Creiamo per prima cosa e per sicurezza un pool generale dedicato ( nome www.5.6 )
; Start a new pool named ’www’.
; the variable $pool can we used in any directive and will be replaced by the
; pool name (’www’ here)
[www5.6]

Anche le porta di ascolto del servizio di default dovrà essere cambiata, rispetto
a quella già in uso.

listen = 127.0.0.1:9500

Se usiamo una directory dove ci sono altre configurazioni di tipo ”pool”, è necessario dichiararla
( il nome dovrà essere ovviamente diverso da quella usata per php 5.5 ).

include=/usr/local/etc/pool.d-5.6/*.conf

Copiamo i file header della versione 5.6, in una cartella temporanea.

$ mkdir /usr/local/include/php-5.6/
$ cd php-5.6.15/
$ cp -pr main/ /usr/local/include/php-5.6/
$ cp -pr Zend/ /usr/local/include/php-5.6/
$ cp -pr sapi/ /usr/local/include/php-5.6/
$ cp -pr ext/ /usr/local/include/php-5.6/
$ cp -pr include/ /usr/local/include/php-5.6/
$ cp -pr TSRM /usr/local/include/php-5.6/

I moduli compilati con le versione API di php 5.5 non potranno essere usati con le versioni 5.6.
Dobbiamo quindi compilarli ”inviando” alle configurazioni dello script ’configure’ del modulo,
le versioni API della versione 5.6.
Per farlo, temporaneamente sostituiremo la cartella php con gli header, in /usr/local/include con
quella contenente la versione 5.6.

$ mv /usr/local/include/php /usr/local/include/__php_5.5
$ mv /usr/local/include/php-5.6/ /usr/local/include/php


Esempio di compilazione modulo (memcache) con le nuove API di php 5.6

$ cd memcache-2.2.4
$ ./configure --with-php-config=/usr/local/bin/php-config-5.6
$ make

Copiamo ora il modulo
$ cp -p modules/memcache.so /usr/local/lib-5.6/php/extensions/

Editiamo il file di configurazioni php ’/usr/local/lib-5.6/php.ini’
( perchè è il file che verrà letto dal binario fpm __php-fpm.5.6
( posizionato in /usr/local/sbin/ ).
Specifichiamo la posizione del modulo memcache

extension=/usr/local/lib-5.6/php/extensions/memcache.so

Lo script di php 5.6 può essere avviato,

$ /etc/init.d/php5.6-fpm start

Se le nostre configurazioni saranno corrette, la porta 9500 ( o quella che avete specificato )
sarà attiva e pronta alle richieste proxy. Inoltre non dovranno comparire all’avvio, altri errori
sulle versioni delle API.
Il file contenente il pid del nostro processo fpm di php 5.6 sarà registrato con questo nome,
/usr/local/var/run/php-fpm-5.6.pid

Nota per PHP versione 7
modulo MEMCACHED (compilare versione piu' aggiornata) disponibile a questo sito



back