Ultimo aggiornamento: 25 marzo 2024 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 versione 5.6.X con una sessione dedicata. Questa guida può essere seguita anche per attivare la versione 7.4.X. Compiliamo la versione php 5.6 (nell'esempio ho omesso parametri standard per comodità). Ho scelto di installare i file utili a questa versione secondaria di php in questa directory: /usr/local/lib-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 $ cp -p php-5.6.x/cli/php /usr/local/bin/php-5.6.x 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/ Copia dei file di supporto php ATTENZIONE: solo per passaggio che mantiene la stessa sotto versione (esempio: 7.1 a 7.4), lanciare questo comando di copia: $ cp -pr /usr/local/lib/php /usr/local/lib-5.6/ In caso di passaggio di versione maggiore (esempio 5.x a 7.x), copiare la directory /usr/local/lib/php (dove si trova il file PEAR.php) della nuova versione già compilata, in un'ambiente php (con identica versione), nella directory di destinazione nuova versione, esempio /usr/local/lib-7.X/php. Fine copia dei file di supporto php 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 Copiamo il file phpize dal sorgente compilato poco fa, $ cp -p scripts/phpize /usr/local/bin/phpize-5.6 Prima di usare phpize-5.6 editiamo lo stesso file ed editiamo questa variabile. Dovremo specificare la posizione dei file php contenuti nella directory /usr/local/lib-5.6/php phpdir="`eval echo ${exec_prefix}/lib-5.6/php`/build" Esempio di compilazione modulo (memcache) con le nuove API di php 5.6 $ cd memcache-2.2.4 $ /usr/local/bin/phpize-5.6 $ ./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.X modulo MEMCACHED (compilare versione più aggiornata) disponibile in questo spazio GitHub Compilazione: $ phpize $ ./configure $ make Copia del modulo: $ cp -p memcached.so /usr/local/lib-7.4/php/extensions/no-debug-non-zts-20190902/ Specificare poi nel file php.ini queste due direttive: session.save_handler = memcached session.save_path = "127.0.0.1:11211" back