Installare più versioni di PHP in XAMPP

In questa guida viene spiegato come avere più versioni di PHP nella stessa installazione di XAMPP.
Oltre alla parte teorica, per maggiore chiarezza viene spiegato come aggiungere una versione specifica di PHP (in particolare la versione 5.6).

Il primo passo è scaricare la versione di PHP aggiuntiva (poi potete ripetere tutti i vari passi per aggiungere altre versioni) da questa pagina.
Tutti i file presenti in quella pagina hanno un nome in questo formato “php-{NUMERO_VERSIONE}-Win32-vs{NUMERO_VS}-x{BIT}.zip” oppure in questo formato “php-{NUMERO_VERSIONE}-nts-Win32-vs{NUMERO_VS}-x{BIT}.zip” (NTS sta per “Non-Thread Safe”) dove “{NUMERO_VERSIONE}” è il numero di versione di PHP, “{NUMERO_VS}” è il numero di versione del codice distribuibile per Visual Studio e “{BIT}” è per l’architettura della CPU (x64 è per i processori a 64 bit e x86 per i processori a 32 bit). Se avete un computer abbastanza recente, nella maggior parte dei casi dovete installare la versione Thread Safe (senza “nts”) a 64 bit.
Per il nostro esempio con PHP 5.6, viene scaricato il file “php-5.6.40-Win32-VC11-x64.zip” (è l’ultima versione di PHP 5.6 disponibile).

Nella cartella in cui è installato XAMPP si deve creare una cartella per la nuova versione di PHP ed estrarre il contenuto del file ZIP di PHP.
Per il nostro esempio con PHP 5.6, viene estratto il contenuto del file ZIP nella cartella “php56”.

All’interno della cartella deve essere creato il file “php.ini”. Per farlo conviene copiare il file “php.ini-development” e rinominare la copia in “php.ini”.
A questo punto dovrete quasi sicuramente fare delle modifiche al file “php.ini” per far funzionare al meglio PHP.

Ora si deve far sapere a XAMPP che c’è un’altra versione di PHP disponibile.
Per farlo si deve entrare nella cartella principale in cui è installato XAMPP e si deve modificare il file apache\conf\extra\httpd-xampp.conf.
Alla fine del file si deve aggiungere una cosa del genere (questo è l’esempio per PHP 5.6):
# PHP 5.6
ScriptAlias /php56/ "C:/xampp/php56/"
Action application/x-httpd-php56-cgi "/php56/php-cgi.exe"
<Directory "C:/xampp/php56">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
          Require all granted
    </Files>
    
    SetEnv PHPRC "C:/xampp/php56"
</Directory>
</code></div> Nello stesso file è possibile stabilire che in una determinata cartella venga utilizzata la versione di PHP appena aggiunta invece che quella principale. Per farlo si deve aggiungere una cosa del genere (questo è l’esempio per PHP 5.6): <div class="code"><code><pre># Progetto con PHP 5.6 <Directory "C:/xampp/htdocs/progetto"> UnsetEnv PHPRC <FilesMatch "\.php&#36;"> php_flag engine off SetHandler application/x-httpd-php56-cgi </FilesMatch> </Directory>


Se, invece, avete già dei virtual host è possibile modificarli nel file apache\conf\extra\httpd-vhosts.conf.
Per farlo dovete modificare i vostri virtual host in questo modo (questo è l’esempio per PHP 5.6):
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/progetto"
    ServerName progetto
	UnsetEnv PHPRC
	<FilesMatch "\.php&#36;">
        php_flag engine off
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</VirtualHost>
</code></div> Se dopo l’esecuzione di una pagina con uno script in PHP esce un errore che segnala che manca il file “MSVCR71.dll” oppure il file “MSVCR110.dll”, significa che manca il codice distribuibile per Visual Studio. In base al nome del file ZIP di PHP scaricato è possibile capire quale versione del codice distribuibile di Visual Studio non è stato trovato. VC9: Visual C++ Redistributable for Visual Studio 2008 (ID su winget: Microsoft.VCRedist.2008.x86 e Microsoft.VCRedist.2008.x64) VC11: Visual C++ Redistributable for Visual Studio 2012 (ID su winget: Microsoft.VCRedist.2012.x86 e Microsoft.VCRedist.2012.x64) VC15 e VS16: Visual C++ Redistributable for Visual Studio 2015-2019 (ID su winget: Microsoft.VCRedist.2015+.x86 e Microsoft.VCRedist.2015+.x64) Nell’esempio con PHP 5.6 ho eseguita il seguente comando dal terminale: <div class="code"><code><pre>winget install --id Microsoft.VCRedist.2012.x64

Guida scritta da il 04/11/2023.

comments powered by Disqus