Aggiornare da PHP 5.2 a PHP 5.3. Errori e non funziona pi

Un errore frequente negli ultimi mesi è quello di aggiornare incautamente da PHP 5.2 a PHP 5.3

Per quanto sia diritto e dovere di ogni sistemista che si rispetti, mantenere sempre aggiornato il proprio sistema, è sempre meglio informarsi sulle problematiche in cui si può incappare nell’aggiornamento di pacchetti software come il PHP, un vero e proprio linguaggio di programmazione web.

Ad essere onesti una parte della colpa andrebbe accollata agli sviluppatori di PHP che hanno creato confusione e svariati fraintendimenti in quanto si presupponeva a rigor di logica e buon senso che siccome l’upgrade da 5.1 a 5.2 non diede nessun problema di retrocompatibilità allora nemmeno l’aggiornamento a php 5.3 avrebbe dovuto darla.

Sarebbe stato inoltre saggio aspettare il rilascio del php 6 in ambiente di produzione, dato che php 5.3 è stato definito all’unanimità “una palestra per abituarsi prima di passare al 6“.

Addirittura alcuni panneli di controllo Point e click come Plesk proponevano l’aggiornamento automatico e con un paio di click si riusciva seriamente a compromettere il funzionamento degli script PHP non pienamente compatibili col 5.3

Fatto sta che in questa problematica sono incappati non solo novellini e sedicenti sistemisti ma anche serissimi hosting provider e sistemisti carrozzati con un decennio di esperienza su server linux.

Esistono tuttavia alcune soluzioni pratiche per ovviare al problema in base a diversi scenari, esperienza e sopratutto necessità.

In uno scenario di hosting condiviso ad esempio, laddove ci siano molti siti non compatibili con la nuova versione di PHP a causa delle funzioni deprecate, la soluzione migliore consiste nel fare un downgrade alla versione 5.2 dell’interprete PHP. Ovvero disinstallare tramite package manager (ad esempio apt, yum o yast) la versione del php 5.3 e i relativi moduli e installare nuovamente il php 5.2.

Nell’ipotesi invece che il server ospiti solo un paio di siti (magari gestiti dallo stesso cliente) è possibile valutare qualora usasse piattaforme di pubblicazione contenuti o ecommerce (come ad esempio: Joomla, Drupal, Zencart, Magento, Prestashop, WordPress, ecc…) la possibilità di aggiornare la piattaforma del CMS all’ultima versione che potrebbe essere compatibile col nuovo PHP 5.3. A titolo puramente informativo con Zencart funziona perfettamente.

Nella più remota ipotesi invece che si possa mettere mano al codice PHP (l’abbiamo scritto noi, il cliente è daccordo o magari il cliente stesso vuole aggiornare la compatibilità al 5.3) non rimane altro che armarsi di pazienza e correggere gli script rimpiazzando le funzioni deprecate. Un valido aiuto è quello di abilitare il logging degli errori e dei warning PHP nonchè di verificare i vari errori nel file error.log di apache.
Sicuramente la via più ardua e meno percorribile ma sicuramente la via più indicata se lungimiranti ad un ulteriore passaggio a PHP 6.

Si ricorda che forniamo assistenza sistemistica e siamo in grado di risolvere questa problematica in tempi e costi decisamente interessanti e competitivi.

Contattateci subito.

Correggere `ereg is deprecated` in PHP 5.3

Se avete aggiornato a PHP 5.3 troverete probabilmente alcuni messaggi di warning riguardanti le funzioni deprecate.

Ad esempio la famiglia delle funzioni ereg sono state sostituite con le compatibili Perl preg.

Per migrare ereg():

ereg('\.([^\.]*$)', $this->file_src_name, $extension);

diventerà

preg_match('/\.([^\.]*$)/', $this->file_src_name, $extension);

Per migrare ereg_replace():

$this->file_dst_name_body = ereg_replace('[^A-Za-z0-9_]', '', $this->file_dst_name_body);

diventerà

$this->file_dst_name_body = preg_replace('/[^A-Za-z0-9_]/', '', $this->file_dst_name_body);