Proprio ieri ho aggiornato alla ultimissima Ubuntu, appena uscita. E proprio oggi si è avverato uno dei peggiori incubi del programmatore: rimettere le mani in un’applicazione rimasta inerte per 5 anni, perché all’improvviso si è presentato un bacherozzo bloccante. Ogni tentativo è stato inutile: l’applicazione non è compatibile con PHP5. Ergo, occorreva trovare un sistema (veloce) per far funzionare il PHP4, correggere il baco e poi buttare tutto.

Ecco come ho fatto (nota per gli amici Debianisti: ho più pratica nella compilazione del php/apache che nei vari giochini a colpi di dpkg; abbiate pazienza):

  • Primo problema: trovare i sorgenti di PHP4. Il sito ufficiale non li ha più disponibili, per cui occorre trovarseli altrove; io sono andato a prendere il pacchetto di Debian Etch.
  • PHP andrà compilato solo come CGI (l’idea è quella di usare lighttpd + fastcgi). Scompatta i sorgenti e poi dai un bel ./configure –with-mysql=/usr  –enable-fastcgi. Attenzione che non è sufficiente il solo –with-mysql, perché altrimenti verrà compilato il supporto mysql “vecchio”, che non funzionerebbe con i server 5.x. Probabilmente il configure si lamenterà della mancanza di qualcosa, la qual cosa provvederete ad installare (es: libmysqlclient-dev).
  • Apt-get install lighttpd (probabilmente non partirà se avrai attivo Apache, ma non ti preoccupare) e poi:
    • Modifica /etc/lighttpd/lighttpd.conf per farlo andare su un’altra porta che non sia l’80 (dove potresti avere Apache). Io ho usato l’81.
    • Esegui lighttpd-enable-mod fastcgi
    • Modifica /etc/lighttpd/conf-enabled/10-fastcgi.conf e cambia il “bin-path” del php, per farlo puntare a <dirSorgentiPhp4>/sapi/cgi/php
    • fai (ri)partire lighttpd /etc/init.d/lighttpd start

A questo punto i file php letti da localhost:81 verranno interpretati dal php4 fastcgi, via lighttpd mentre tutto il resto continuerà a funzionare come prima via Apache e php5 DSO :)

Se vuoi usare un sistema del tipo VirtualHost di Apache con lighttpd, ti copio la mia configurazione da mettere nel tuo /etc/lighttpd/lighttpd.conf


$HTTP["host"] =~ "miodominio\.local(\:[0-9]*)?$" {
server.document-root = "/home/claudioc/Sites/miodominio"
}

La cosa a cui fare attenzione è che anche se la chiave si chiama “host”, in realtà nella regexp occorre fornire il match anche per una eventuale porta (come nel caso di esempio).

Print