parallax background

MacOs High Sierra: occhio se lo usate come server web!

DaVinci Resolve 14: finalmente Blackmagic Design rilascia la versione 14!
28 settembre 2017
Ubuntu e VNC: errore di connessione con VNCViewer o altri client VNC
11 ottobre 2017

Sviluppi web (PHP + mySQL) su Mac e utilizzi l'app Server? Attenzione!


Apple ha introdotto PHP 7.1, che non supporta più i comandi "mysql*"

Apple ha da poco aggiornato MacOS alla versione 10.13, denominata High Sierra.

Per l'occasione ha anche aggiornato l'app Server, che ora offre PHP 7.1.7.

Il che, in un mondo perfetto, andrebbe anche bene: OS moderno, Webserver modernissimo. Ma cosa significa se i siti che state sviluppando si basano ancora sull'ormai rimossa/obsoleta (ma diffusissima) libreria "mysql", anzichè sulla più moderna "mysqli"?



Panico
Nel mio caso, stavo pianificando nei prossimi mesi una conversione da mysql a mysqli di un grande portale. Ma prima dovevo terminare degli sviluppi strategici. Dopo l'upgrade, aprire Safari, puntare al sito in ambiente di sviluppo locale, e scoprire che non funzionava più nulla, mi ha mandato un pochino in panico.

L'accesso a mySQL non avviene, eppure il servizio è attivo e raggiungibile con i vari tools. L'errore quindi non è mySQL.

Provo a riavviare il servizio da Server, ma niente...

Ed ecco l'illuminazione: che versione ho di PHP? eseguo da terminale il comando

php -v;

Ed ecco svelato il mistero:

Ma adesso come fare per poter testare localmente il portale?

Clonare il sito sul server di produzione sarebbe stato troppo problematico. Doveva esserci qualcosa di alternativo ma funzionale.

E intanto il tempo scorreva inesorabile...



Grazie internet!
O meglio, grazie popolo di sviluppatori!

Ho trovato su un forum un ragazzo che aveva riscritto sia le funzioni di mysql* che le ereg*.

Poco dopo trovo che un altro sviluppatore aveva fatto lo stesso, ma solo per mysql*, dove lo script si attiva solo se rileva PHP7, mentre bypassa il tutto se siamo sulle versioni precedenti di PHP.

Problema risolto? Non proprio... anche caricando le librerie come includes, la home restava bianca... Ho provato allora a creare una nuova pagina, con una semplice chiamata al DB. Funzionava. Quindi cosa non mi permetteva di far girare il portale?

Semplice: una libreria esterna (SimplePie) che non era stata aggiornata per l'utilizzo di mysqli.
Scaricando l'ultima release, tutto ha ripreso a funzionare.

Se anche tu ti trovi nella mia stessa situazione (sito con mysql* e con PHP 7.x), fai riferimento a questi link, e dovresti risolvere.

Librerie mysql* e ereg*: Sourceforge (mysql) e Sourceforge (ereg*)

Altro script solo per mysql*: PHP Classes

Ringrazio ancora queste menti geniali che mi hanno permesso di proseguire nel mio lavoro, in attesa di convertire il codice per PHP 7.x e, di conseguenza, passare a mysqli.