Rendere compatibili script php5 in php7

Può essere comune trovarsi nella condizione di eseguire software od in generale script php5 in php7 non avendo possibilità di aggiornare il codice, eseguire un refactoring o comunque intervenire in qualche modo. Sebbene PHP introduca con la versione 7 nuovi operatori, razionalizzazioni e miglioramenti, le caratteristiche che più si notano sicuramente fanno riferimento a funzioni od estensioni deprecate.

Usare script php5 in php7

Punti essenziali per usare script php5 in php7

Non esistono motivi specifici secondo i quali un software php scritto diversi anni fa non debba funzionare con un interprete recente, anzi in molti casi (es. utilizzo intensivo di tabelle hash) si riscontrano solo miglioramenti su tempi ed utilizzo di cicli.
In linea generale uno script php5 in php7 non dovrebbe avere problemi ad essere eseguito: probabilmente gli unici casi che si verificano in merito ad interruzioni ed errori riguardano script che utilizzano funzioni deprecate, in particolare quelle originate dalle estensioni mysql ed ereg.
Un comune caso è quello della presenza di collegamento a database senza utilizzare PDO, quindi già alla prima chiamata mysql_connect si incontra il primo ostacolo.

Possibili soluzioni con minimo impatto

L’ideale sarebbe potersi sbarazzare in modo definitivo delle chiamate alle funzioni superate, inefficienti e deprecate: nell’esempio preso in considerazione passare dalle chiamate alle funzioni di connessione MySQL alle funzioni o meglio classi disponibili attraverso PDO.

Se tuttavia non sia possibile o conveniente revisionare il codice od installare aggiornamenti, possono tornare utili due repository disponibili su github utili per “colmare la distanza” facendo da tatto di unione tra software legacy e versioni recenti degli interpreti.

Per le funzioni derivate da ereg, Björn Brala ha pubblicato php7-ereg-shim.

Nel caso di intervento su codice che utilizza funzioni di connessione instaurate direttamente con l’estensione MySQL Davey Shafik ha reso disponibile il pacchetto php7-mysql-shim, questo ultimo disponibile anche in composer integrabile con il classico comando

composer require dshafik/php7-mysql-shim