Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Testare PHP 5 conservando PHP 4: server Linux

Installare PHP 5 e PHP 4 sullo stesso server Windows. PHP 5 come CGI su server Apache 1.x e 2.x
Installare PHP 5 e PHP 4 sullo stesso server Windows. PHP 5 come CGI su server Apache 1.x e 2.x
Link copiato negli appunti

Introduzione

In quest'articolo affronteremo le problematiche inerenti alla convivenza tra PHP4 e PHP5, ma accenneremo anche alle differenze nella compilazione e installazione delle due versioni del linguaggio.

Prima di proseguire con la lettura, al fine di comprendere a fondo le spiegazioni, è importante avere già ben presenti i passaggi richiesti dalla classica LAMP: Installare Apache, PHP e MySQL in ambiente Linux (Linux, Apache, MySQL, PHP). Inoltre sarà utile aver letto anche l'articolo inerente all'installazione LAMP da Installiamo Linux, Apache, MySQL e PHP con i pacchetti precompilati, così da avere una visuale più ampia.

PHP4 e PHP5: differenze nella compilazione e nell'installazione

Le differenze sono minime: dobbiamo innanzitutto scaricare i sorgenti di PHP5 dal sito ufficiale www.php.net, e una volta ottenuto il pacchetto proseguiremo attenendoci alle istruzioni già note per PHP4, pertanto ci serviremo dei percorsi già utilizzati nell'articolo riguardante il LAMP.

cd /usr/local/src
tar zxvf /path/to/php-5.y.z.tar.gz

/path/to/php-5.y.z.tar.gz indica il percorso del file, ovvero dove è stato salvato il file al momento del download. A questo punto, troveremo, dentro usr/local/src, una directory chiamata php-5.y.z che conterrà i sorgenti di php. Adesso possiamo passare alla compilazione vera e propria di PHP5.

cd /usr/local/src/php-5.y.z
./configure --prefix=/usr/local/php-5.y.z
--with-apxs=/usr/local/apache_x.y.z/bin/apxs
--with-mysql=/usr/local/mysql_x.y.z
--with-config-file-path=/usr/local/apache_x.y.z/conf/
make
make install

Come risulta evidente i parametri di compilazione di PHP5 sono praticamente uguali a quelli utilizzati nell' intallazione LAMP con PHP4, tranne per la path specificata nell'opzione --with-mysql.

A causa di problemi di compatibilità tra la licenza GPL e quella Apache (PHP utilizza la seconda mentre Mysql la prima) PHP5 non ha più in bundle (ovvero non ha più all'interno) la libreria client per Mysql. Ovviamente è possibile utilizzare la libreria distribuita con MySQL, purchè lo si sia installato precedentemente.

Per maggiori informazioni sui parametri di compilazione è possibile digitare:

./configure --help | less

in modo da poter comodamente spostarsi tra le righe visualizzate dal comando configure utilizzando le frecce: su e giù per spostarsi verticalmente o destra e sinistra per spostarsi orrizzontalmente.

L'installazione prosegue normalmente con la configurazione del php.ini, editabile con il vostro editor di testo preferito.

cp php.ini-dist /usr/local/apache_x.y.z/conf/php.ini

È importante abilitare la retro compatibilità di PHP5 per gli script basati su PHP4 e PHP3, altrimenti questi ultimi difficilmente funzioneranno.

L'opzione in questione è la seguente:

zend.ze1_compatibility_mode = On

Questo parametro si trova all'inizio del file, sotto l'opzione "engine"

A questo punto dobbiamo semplicemente specificare ad Apache di usare PHP5: aAprite il file di configurazione di Apache (httpd.conf si trova all'interno della cartella conf di Apache e cioè, se avete seguito l'installazione LAMP, in /usr/local/apache_x.y.z/conf/) ed aggiungete le seguenti righe:

LoadModule php5_module libexec/libphp5.so
AddType application/x-httpd-php .php

A questo punto riavviate Apache usando il tool apachectl in questo modo

/usr/local/apache_x.y.z/apachectl stop
/usr/local/apache_x.y.z/apachectl start

Se Apache non ha dato errori all'avvio possiamo verificare se l'installazione di PHP5 è andata a buon fine. Spostiamoci all'interno della DocumentRoot di Apache, ovvero /usr/local/apache_x.y.z/htdocs/, ed eseguiamo i comandi:

touch phpinfo5.php
chmod 644 ./phpinfo5.php
echo "<?php phpinfo(); ?>" > phpinfo5.php

Ora è possibile verificare se l'installazione di PHP5 è davvero andata a buon fine, quindi apriamo il nostro browser preferito e visualizziamo l'indirizzo: http://localhost/phpinfo5.php

PHP5 porta con se svariate novità, tra cui alcune importanti estensioni, ad esempio MySQLi, che permetterà la connessione con MySQL 4.1 e le versioni superiori, l'estensione per SQLite, che permetterà di utilizzare dei FLAT-FILE (ovvero dei normalissimi file) come database, molto utili nel caso il proprio hoster metta a disposizione un RDBMS come Mysql, e ancora l'estensione SimpleXML, che permetterà di lavorare molto semplicmente con XML.

PHP4 e PHP5: Come farli convivere

Sicuramente molti si saranno domandati se sia possibile continuare a sviluppare con PHP4 e al tempo stesso testare PHP5, in effetti si tratta di una configurazione estremamente semplice.

Ci sono svariati sistemi per far convivere PHP4 e PHP5 sullo stesso webserver, ma noi ne tratteremo solo uno per motivi di semplicità e di compatibilità, e cioè installeremo uno dei due interpreti (verosimilmente quello PHP5) come CGI: in questo modo funzionerà bene con Apache 1.3.x, ma anche con Apache 2.x ed qualsiasi altro web server.

Comunque, per chi fosse interessato ad ulteriori configurazioni, di seguito saranno riportati dei link che mostreranno come installare, ad esempio, PHP5 come Fast-CGI su Apache2, o all'interno di uno specifico Virtual Host ed altro ancora.

Dobbiamo comunque tenere presente che l'interprete PHP5 ha un'ottimo supporto per la retrocompatibilità con gli script PHP4 (abilitando l'opzione già vista), quindi prima di utilizzare due versioni di PHP contemporaneamente vi consiglio di testare i vostri script su PHP5 per vedere se funzionano in ogni caso correttamente.

PHP4 e PHP5: Convivenza tramite CGI

Gli script interpretati dalla versione CGI di PHP saranno molto più lenti rispetto a quelli interpretati dalla versione di php, che gira come modulo del web server.

Il problema principale è decidere quale versione di PHP utilizzare come CGI, infatti se vorremo continuare, principalmente, a sviluppare utilizzando PHP4, che si trova su tutti gli hoster che supportano PHP, allora dovremo mettere PHP5 come CGI, se vorremo, invece, sviluppare i nuovi applicativi utilizzando PHP5, dovremo mettere PHP4 come CGI, ma questo rallenterà terribilmente i vecchi applicativi.

Comunque, immagino che a pochi interessi sviluppare principalmente per PHP5 dato che ancora nessun'hoster lo utilizza, quindi utilizzeremo proprio quest'ultimo in modalità CGI.

Le operazioni da eseguire sono veramente basilari, queste, ovviamente, devono essere svolte dopo la corretta compilazione ed installazione di PHP4 con Apache.

Entriamo nella directory contenente i sorgenti di PHP5:

cd /usr/local/src/php-5.y.z

Adesso è necessario ricompilare PHP5 utilizzando dei parametri diversi rispetto all'installazione come modulo, omettendo il riferimento a APXS.

./configure --prefix=/usr/local/php5
make
make install
cp php.ini-dist /usr/local/php5/lib/php.ini

Non ho abilitato alcuna estensione, quindi è importate che aggiungiate le estensioni che ritenete utili.

Se avete inserito, nel vostro httpd.conf, la riga inerente al modulo di PHP5 per Apache dovete toglierla, ovvero dovete rimuovere:

LoadModule php5_module libexec/libphp5.so

Fatto questo possiamo procedere all'installazione di PHP5 come CGI, basta aggiungere, sempre all'interno del file di configurazione di apache, le seguenti righe:

ScriptAlias /cgi-php/ "/usr/local/php5/bin/"
AddType application/x-httpd-php5 .php5
Action application/x-httpd-php5 "/cgi-php/php"

Queste linee specificheranno ad apache di far interpretare i file con estensione .php5 all'interprete PHP per CGI, in questo modo i vostri applicativi con estensione .php5 verranno automaticamente interpretati dall'interprete PHP5 CGI.

Fatto tutto questo riavviate apache e PHP5 funzionerà correttamente e normalmente se non si sono verificati errori durante la procedura di compilazione ed installazione.

ATTENZIONE: I comandi come include, include_once, require e require_once non verranno interessati da questa modifica, i file inclusi tramite loro verranno interpretati dalla versione di php che sta eseguendo uno script, ovvero se includete un file con estensione .php tramite PHP5 questo verrà interpretato da PHP5 e non da PHP4.

Inoltre se avete installato il Wrapper SUEXEC, i CGI in generale potrebbero avere dei problemi.

L'unica carenza di questo sistema è che nel passaggio da un'ambiente di sviluppo, ad esempio il vostro sistema, ad un'ambiente di produzione, ad esempio il vostro hoster, sarete costretti a rinominare tutte le estensioni dei file da .php5 a .php per farli funzionare correttamente con Apache e PHP5, quindi ancora una volta ripeto, testate se la retro compatibilità di PHP5 funziona correttamente con i vostri script in modo da evitare problemi successivi.

Di seguito verranno riportati tutta una serie di link inerenti a php5 ealla convivenza tra questo ed il suo predecessore: descrivono tecniche diverse per permettere la convivenza di queste due diverse versioni di php

Ti consigliamo anche