Installare PHP 5.5 (5.4, 5.6) su CentOS 6

php55E così volete aggiornare il vostro vecchio, obsoleto e deprecato 5.3, magari installando PHP 5.5 sulla vostra 6, ma anche 7, ma anche 5.10, ma anche RedHat, per avvantaggiavi delle nuove funzioni, o magari anche solo perché le API di Facebook richiedono il 5.4?
Benissimo, ecco come si fa.
Notare che anche se è rimasta alla 5.3, uscita nel 2010, gli di sono andati avanti sino al 2013. Ma dal punto di vista prestazionale è un po’ un’altra cosa.

Alcuni howto la fanno troppo facile, in realtà non è così liscia, non bastano due comandi per arrivare allo scopo, come vien detto ad esempio qui:
https://webtatic.com/packages/php55/
Tenete conto di questa pagina perché ci trovate già i nomi dei pacchetti disponibili, otenibili anche con yum.

La prima cosa è loggarsi e montare il repo con i pacchetti
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

Se a questo punto provate a fare come suggeriscono
yum install php55w php55w-opcache
vedrete diversi errori di conflitto.
Serve a poco mettersi alla ricerca su internet, oppure seguire le istruzioni d ym stesso. Dobbiamo prima smontare, senza paura, i pacchetti di conflitto. In pratica tutti quelli del 5.3. Usate
rpm -qa | grep
per avere l’elenco completo, qualcosa tipo

-common-5.3.3-40.el6_6.x86_64
-pdo-5.3.3-40.el6_6.x86_64
plesk-aps--runtime-12.0.18-1016274.14060313.noarch
5-ioncube-loader-4.6.0-14042516.x86_64
-cli-5.3.3-40.el6_6.x86_64
php--5.3.3-40.el6_6.x86_64
-5.3.3-40.el6_6.x86_64
-imap-5.3.3-40.el6_6.x86_64
-mbstring-5.3.3-40.el6_6.x86_64
psa-5-configurator-1.6.3-cos6.build1200140526.11.x86_64
psa--4.2.5-cos6.build1200140702.16.noarch
-xml-5.3.3-40.el6_6.x86_64
-gd-5.3.3-40.el6_6.x86_64
psa-phppgadmin-5.1-cos6.build1200140423.17.noarch

Come vedete c’è anche Plesk di mezzo (pacchetti psa*), però di quelli non ci dovremo preoccupare.
A seconda della vostra lista dovete costruire il comanda di rimozione inserendoci tutti quelli con 5.3.3 nel nome (“rpm -qa | grep php | grep 5.3” vi aiuta), per me
rpm -e –nodeps php php-cli php-common php-pdo php- php-gd php-imap php-mbstring php-xml
Il nodeps serve perché il sistema non vi scocci con le dipendenze.
Non provate a usare yum remove, dovete esseer chirurgici.

Quindi subito reinserite i pacchetti che avevate:
yum install php55w php55w-opcache php55w-pdo php55w- php55w-gd php55w-imap php55w-mbstring php55w-mcrypt php55w-xml
Io in più ci ho messo pure opcache e mcrypt. Mettete “54” o “56” nei vari nomi al posto di “55” se volete installare la versione 5.4 o 5.6.

A questo punto avete fatto, o quasi. Provate un
service httpd restart && php -v
per vedere che versione avete istallato.
Se nel sistema c’è anche Plesk, a ogni invocazione del php può darvi questo errore qui:
Failed loading /usr/lib64/php/modules/ioncube_loader_lin_5.3.so: /usr/lib64/php/modules/ioncube_loader_lin_5.3.so: undefined symbol: execute
In ogni caso se provate ad accedere col Plesk vedrete che funziona regolarmente, quindi è (quasi) tutto a posto.

Anche qui è inutile cercare in rete per trovare un rimedio. Vedendo il contenuto della dir dove sta il modulo
ll /usr/lib64/php/modules/ioncube_loader*
vedrete che sono presenti varie versioni dei moduli, si tratta solo di un problema di aggancio.
Per questo basta rimuovere e reinstallare, prima però vedete da dove proviene quel pacchetto:
yum info php5-ioncube-loader
e segnatevi il nome nella riga “From repo”
Quindi inserite quel nome dopo enablerepo, che non è abilitato di default:
rpm -e –nodeps php5-ioncube-loader
yum install php5-ioncube-loader –enablerepo PSA_12_0_18-dist

Se per caso ricevete invece un errore
Error getting repository data for PSA_12_0_18-dist, repository not found
vuol dire che non avete mai fatto un al vostro Plesk, e allora dovrete andare nell’apposita interfaccia di aggiornamento o istallazione di nuovi componenti, e messi di fronte alla lista dei pezzi di Plesk installati dovrete selezionarne uno che non c’è, tipo Health monitor che fa sempre comodo, o Plesk migration manager.
Una volta iniziata la procedura potrete ridare il comando yum install precedente e il pacchetto sarà trovato e installato.

A questo punto vedrete che il
service httpd restart && php -v
non vi restituirà errori e tutto funzionerà al meglio.
Se l’operazione di reistallazione non riesce non preoccupatevi, non avete perso molto.

Un paio di considerazioni prima di chiudere.
Il vostro /etc/php.ini verrà salvato come php.ini.rpmsave e sostituito dal nuovo php.ini. Da qui cambia tutto, ovvero vi trovate con delle impostazioni iniziali di default che potrebbero essere diverse da quelle che avete messo voi, specie se modificate nel corso degli anni.
Tipico è il fatto che display_errors sia off e che sia cambiata la error_reporting. Per ripristinare in fretta la situazione precedente potete fare un
mv php.ini php.ini.new %% cp php.ini.rpmsave php.ini
service httpd restart && php -v
però attenti che incapperete nei problemi che descrivo qui sotto.

Potete scegliere anche di istallare il php 5.4, se non siete molto coraggiosi, oppure il 5.6 se ve la sentite. Più in là andate e potenzialmente più incompatibilità ci sono.
Ad esempio, dalla versione 5.4 ci sono delle impostazioni deprecate, che se in qualche caso non vi interessano, in altri potrebbero costringervi a rivedere pesantemente le vostre applicazioni.

Potete usare “php -v” per sapere esattamente quali siano e a che riga si trovino gli errori.
Ad esempio, safe_mode non è più usato ed è bene rimuoverlo, mentre magic_quote_gpc potrebbe non farvi più funzionare delle query impostate su apramentri raccolti da form o url, se non avete usato funzioni come mysql_real_escape_string per manipolare le vostre query prima di farle eseguire, dovrete rivedere il vostro lavoro e inserirle dove serve, pena il blocco delle query stesse.

Articoli correlati

Una risposta a Installare PHP 5.5 (5.4, 5.6) su CentOS 6

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *