WPF

…sometime change is everything…
Filed under Linguaggi di Programmazione, Linux, PHP
Questo post ha piu' di 5 mesi. Gli url dei link potrebbero essere inattivi e i dati riportati potrebbero essere superati.

In questi giorni stavo cercando si far convivere PHP4 e PHP5 sulla stessa macchina (distrribuzione Linux Ubuntu Breezy). Ricercando e "googlando" ho trovato 2 soluzioni:
- la prima (90% dei casi) è quella di installare PHP4 o PHP5 come CGI;
- la seconda è quella di installare PHP4 e PHP5 come moduli andando a lanciare poi due processi di apache appositamente configurati;
Per entrambe, ho trovato soluzioni che portavano invariabilmente a dover compilare/ricompilare uno o più pacchetti: php5, apache, php4, e così via. Alla fine però sono riuscito ad installare sia PHP4 che PHP5 senza dover ricompilare o compilare alcunchè!
Sulla mia macchina linux (Ubuntu breezy) avevo già installato Apache2 (apt-get install apache2), avevo già installato php4 (apt-get install php4), avevo già installato mysql (apt-get install mysql) e infine avevo istallato phpmyadmin ( apt-get install phpmyadmin ).
A questo punto ho installato tutti i pacchetti (ad uno ad uno) che servono per far funzionare il php5: (riferimento)

apache2-mpm-prefork libbz2-1.0 libc6 libcomerr2 libdb4.2 libgdbm3 libkrb53 libmagic1 libpcre3 libssl0.9.7 libxml2 mime-support php5-common zlib1g php-pear

Inoltre ho installato anche il pacchetto php5-cgi.
Questo pacchetto lo avevo installato mentre cercavo di far andare il PHP5 come CGI senza doverlo per forza ricompilare! Vi dico che l’ho installato perchè dopo prenderò spunto dal file php.ini delle cartella /etc/php5/cgi/php.ini per scrivere il file php.ini da utilizzare nella nostra installazione.
Una volta installati tutti questi pacchetti mi sono scaricato il file libapache2-mod-php5_5.0.5-2ubuntu1.2_i386.deb da questa pagina.
A questo punto avevo tutto ciò che mi serviva e, sperimentando, sono arrivato ad installare il PHP4 e il PHP5 insieme così: 1) Ho decompresso il file ".deb" in un directory (es. /home/filippo/php5/) :

dpkg -x libapache2-mod-php5_5.0.5-2ubuntu1.2_i386.deb /home/filippo/php5/

2) Entro nella directory /home/filippo/php5/

cd /home/filippo/php5/ )

3) Ho tre file che mi interessano tra quelli appena scompattati, e si trovano in:

usr/lib/apache2/module/libphp5.so etc/apache2/mods-available/php5.conf etc/apache2/mods-available/php5.load;

4) Prima di andare a copiare i file e quindi a configurare apache2 per funzionare con entrambe le versioni di php vado a fare il backup del file di configurazione di apache :

mv /etc/apache2/apache.conf /etc/apache2/apache.conf.original;

5) Una volta fatto questo vado ad eseguire le seguenti operazioni:

5.1) cp /home/filippo/php5/usr/lib/apache2/module/libphp5.so /usr/lib/apache2/modules/ 5.2) cp /home/filippo/php5/etc/apache2/mods-available/php5.conf /etc/apache2/mods-available/ 5.3) cp /home/filippo/php5/etc/apache2/mods-available/php5.load /etc/apache2/mods-available/

A questo punto ho tutti i file che mi servono in posizione, vado quindi a creare il file php.ini per far funzionare il php5:

6) Per creare il file php.ini per il PHP5 mi sono basato sul file presente (dopo aver installato il pacchetto php5-cgi) in /etc/php5/cgi/php.ini, chi è più esperto o ha bisogno di configurazioni paticolari può anche crearselo da zero o modificarlo a piacimento.
L’importante è DOVE andiamo a mettere questo php.ini! Infatti dobbiamo creare la cartella "mkdir /etc/php5/apache2/" e andare a inserire il nostro file php.ini in essa. Inoltre è suggerita l’abilitazione della retro compatibilità di PHP5 per gli script basati su PHP4 e PHP3 settando l’opzione " zend.ze1_compatibility_mode = On".

Ora andiamo a lavorare su apache2 e creiamo i file di configurazione che utilizzeranno i nostri due processi di apache2:

7) cp /etc/apache2/apache2.conf.original /etc/apache2/apache2.php4.conf

8) cp /etc/apache2/apache2.conf.original /etc/apache2/apache2.php5.conf

9) A questo punto dobbia andare a modificare i file appena creati e lo facciamo come segue: File /etc/apache2/apache2.php4.conf: Alle righe

# Include module configuration: Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf

sostituiamo le righe

# Include module configuration: Include /etc/apache2/mods-enabled/cgi.load Include /etc/apache2/mods-enabled/php4.conf Include /etc/apache2/mods-enabled/php4.load Include /etc/apache2/mods-enabled/userdir.conf Include /etc/apache2/mods-enabled/userdir.load

File /etc/apache2/apache2.php5.conf: Alle righe

# Include module configuration: Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf

sostituiamo le righe

# Include module configuration: Include /etc/apache2/mods-enabled/cgi.load Include /etc/apache2/mods-enabled/php5.conf Include /etc/apache2/mods-enabled/php5.load Include /etc/apache2/mods-enabled/userdir.conf Include /etc/apache2/mods-enabled/userdir.load

Inoltre andiamo a sostituire alle righe

# PidFile: The file in which the server should record its process # identification number when it starts. PidFile /var/run/apache2.pid

le righe

# PidFile: The file in which the server should record its process # identification number when it starts. PidFile /var/run/apache2.5.pid

e alla riga

# Global error log. ErrorLog /var/log/apache2/error.log

sostituiamo la riga

# Global error log. ErrorLog /var/log/apache2/error5.log

Per ultimo andiamo a sostituire alla riga

# Include ports listing Include /etc/apache2/ports.conf

la riga

# Include ports listing Include /etc/apache2/ports.php5.conf

11) Come avrete notato se eseguite il comando "ls /etc/apache2/mods-enabled/" non vediamo i "file" php5.conf e php5.load, questi sono infatti link che dobbiamo creare con i comandi:

ln -s /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf ln -s /etc/apache2/mods-available/php5.load /etc/apache2/mods-enabled/php5.load

Una volta creati i link simbolici, abbiamo un altro dubbio: cosè il file "ports.php5.conf"?
E’ un file che dobbiamo crearci (viene incluso nel file apache2.php5.conf come detto sopra) per indicare ad apache su che porta stare in ascolto delle richieste al web server.
In particolare per quel che riguarda la mia configurazione non ho modificato l’include di ports.conf per il file apache2.php4.conf e quindi quel servizio utilizzerà la porta 80 (default) mentre ho creato come segue il file ports.php5.conf:

cp /etc/apache2/ports.conf /etc/apache2/ports.php5.conf

Modifico ora il file ports.php5.conf andando ad aggiornare il numero di porta su cui voglio che il processo di apache che sfrutta PHP5 stia in ascolto.
Nel mio caso ho scelto la porta 8082: basta cancelare tutto quello che c’è scritto nel file e scrivere nel file "Listen 8082".

Fatto questo siamo apposto e possiamo sperimentare se il nostro lavoro ha dato esito positivo: apriamo una shell, per eseguire il webserver con PHP4 lanciamo il comando "apache2 -f /etc/apache2/apache2.php4.conf", per eseguire il webserver con il PHP5 lanciamo "apache2 -f /etc/apache2/apache2.php5.conf".

Magari per sperimentare se tutto va bene creiamo la solita pagina "info" di php:
Apriamo il file /var/ww/info.php (se non c’è createlo), ci scriviamo dentro "< ? php phpinfo(); ? >".
Una volta creato il file e avviati i nostri due processi andiamo a collegarci con il browser alla pagina http://localhost/info.php e alla pagina http://localhost:8082/info.php e dovremmo ottenere una schermata come questa: schermata php4 php5

Vi lascio poi il link ai file che io ho creato per la mia configurazione, potete scaricarli da qui. Inoltre vi lascio dei riferimenti a pagine web che mi hanno dato più o meno una mano: howtoforge debianhelp my.opera.com html.it

[UPDATE per il modulo di mysql]

Visto che il php5 non dispone del modulo di mysql in automatico (come mi faceva notare Ciccio, che ringrazio), se lo vogliamo, dobbiamo effettuaare ulteriori operazioni. 1) scarichiamo da qui il pacchetto php5-mysql; 2) scompattiamolo alla solita maniera :

dpkg -x php5-mysql_5.0.5-2ubuntu1.2_i386.deb /cartella/scelta/

3) copiamo il file mysql.so:

cp /cartella/scelta/usr/lib/php5/20041030/mysql.so /usr/lib/php5/20041030/

4) modifichiamo il file php.ini (vi /etc/php5/apache2/php.ini) Da così:

;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; ; [...] ; Example lines: ;extension=mysql.so ;extension=gd.so [...]

A così:

;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; ; [...] ; Example lines: extension=mysql.so ;extension=gd.so [...]

Riavviamo apache (sempre con il comando "apache" e specificando il file di configurazione con il modulo php5) e siamo apposto!

This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
Posted by Filippo on Thursday, April 27th, 2006


You can follow any responses to this entry through the magic of "RSS 2.0" and leave a trackback from your own site.

11 Responses to “PHP4 e PHP5 insieme su Apache2 e Ubuntu Breezy”

Post A Comment