1 décembre 2021
Quand on intervient sur un site qui date un peu et qu’on veut travailler dessus en local sous XAMPP, il n’est pas rare de devoir rétrograder sa version de PHP mais la manipulation peut s’avérer délicate sous Windows. Bien sûr, on peut installer plusieurs versions de XAMPP pour répondre à tous les besoins mais personnellement je préfère avoir un seul environnement sur mon pc. Voici, sans doute, la méthode la plus simple pour y parvenir :
Tout d’abord, si ce n’est pas déjà fait, téléchargez la dernière version de XAMPP sur le site officiel et installez-la.
Une fois installé, exécutez le logiciel puis cliquez sur explorer en haut à droite :
Cela vous amène à la racine du dossier XAMPP. A partir de là, allez dans /apache/conf/extra et créez une copie du fichier http-xampp.conf et renommez ce fichier en le suffixant, par exemple, du numéro de version de php auquel correspondra ce fichier.
Ouvrez ce fichier dans votre éditeur de texte favoris, on y revient un peu plus tard.
Maintenant, il va falloir récupérer les versions de PHP qui nous intéressent. Là où cet article diffère des autres qu’on trouve sur internet, c’est qu’on va opter pour une solution qui va droit au but, plutôt que de se perdre dans des paramétrages chronophages.
Nous n’irons donc pas télécharger les dernières versions de PHP sur le site officiel de PHP en version Thread Safe, même si ça serait l’approche la plus « logique ». Il manquera des fichiers et/ou des dossiers à coup sûr pour un bon fonctionnement sous XAMPP.
Au lieu de ça, nous irons sur le site d’Apache Friends, récupérer les versions zip de Xampp qui nous intéresse.
Personnellement, j’ai ça :
Il faut maintenant indiquer à XAMPP quelle version de php utiliser. Dans la dernière version de XAMPP en date, le fichier http-xampp.conf original ressemble à ça :
#
# XAMPP settings
#
<IfModule env_module>
SetEnv MIBDIRS "C:/xampp/php/extras/mibs"
SetEnv MYSQL_HOME "\\xampp\\mysql\\bin"
SetEnv OPENSSL_CONF "C:/xampp/apache/bin/openssl.cnf"
SetEnv PHP_PEAR_SYSCONF_DIR "\\xampp\\php"
#SetEnv PHPRC "\\xampp\\php"
SetEnv TMP "\\xampp\\tmp"
</IfModule>
#
# PHP-Module setup
#
LoadFile "C:/xampp/php/php8ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule php_module "C:/xampp/php/php8apache2_4.dll"
LoadFile "C:/xampp/php/libsqlite3.dll"
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
#
# PHP-CGI setup
#
#<FilesMatch "\.php$">
# SetHandler application/x-httpd-php-cgi
#</FilesMatch>
#<IfModule actions_module>
# Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
#</IfModule>
<IfModule php_module>
PHPINIDir "C:/xampp/php"
</IfModule>
<IfModule mime_module>
AddType text/html .php .phps
</IfModule>
ScriptAlias /php-cgi/ "C:/xampp/php/"
<Directory "C:/xampp/php">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>
<Directory "C:/xampp/cgi-bin">
<FilesMatch "\.php$">
SetHandler cgi-script
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler None
</FilesMatch>
</Directory>
<Directory "C:/xampp/htdocs/xampp">
<IfModule php_module>
<Files "status.php">
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
</Directory>
<IfModule alias_module>
Alias /licenses "C:/xampp/licenses/"
<Directory "C:/xampp/licenses">
Options +Indexes
<IfModule autoindex_color_module>
DirectoryIndexTextColor "#000000"
DirectoryIndexBGColor "#f8e8a0"
DirectoryIndexLinkColor "#bb3902"
DirectoryIndexVLinkColor "#bb3902"
DirectoryIndexALinkColor "#bb3902"
</IfModule>
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
Alias /webalizer "C:/xampp/webalizer/"
<Directory "C:/xampp/webalizer">
<IfModule php_module>
<Files "webalizer.php">
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
</IfModule>
Il va donc falloir jouer au jeu des 7 erreurs, trouver les différentes mentions de php et les faire pointer vers les bons fichiers dans nos nouveaux dossiers. Par exemple, pour php 7, les lignes à modifier seraient :
La liste des modifications est longue mais une fois que c’est fait, on ne revient plus dessus.
Pour php 7, le fichier http-xampp.conf devrait donc ressembler à ça :
#
# XAMPP settings pour php 7
#
<IfModule env_module>
SetEnv MIBDIRS "C:/xampp/php7/extras/mibs"
SetEnv MYSQL_HOME "\\xampp\\mysql\\bin"
SetEnv OPENSSL_CONF "C:/xampp/apache/bin/openssl.cnf"
SetEnv PHP_PEAR_SYSCONF_DIR "\\xampp\\php7"
SetEnv PHPRC "\\xampp\\php7"
SetEnv TMP "\\xampp\\tmp"
</IfModule>
#
# PHP-Module setup
#
LoadFile "C:/xampp/php7/php7ts.dll"
LoadFile "C:/xampp/php7/libpq.dll"
LoadModule php7_module "C:/xampp/php7/php7apache2_4.dll"
#LoadFile "C:/xampp/php7/libsqlite3.dll"
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
#
# PHP-CGI setup
#
#<FilesMatch "\.php$">
# SetHandler application/x-httpd-php-cgi
#</FilesMatch>
#<IfModule actions_module>
# Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
#</IfModule>
<IfModule php7_module>
PHPINIDir "C:/xampp/php7"
</IfModule>
<IfModule mime_module>
AddType text/html .php .phps
</IfModule>
ScriptAlias /php-cgi/ "C:/xampp/php7/"
<Directory "C:/xampp/php7">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>
<Directory "C:/xampp/cgi-bin">
<FilesMatch "\.php$">
SetHandler cgi-script
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler None
</FilesMatch>
</Directory>
<Directory "C:/xampp/htdocs/xampp">
<IfModule php_module>
<Files "status.php">
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
</Directory>
<IfModule alias_module>
Alias /licenses "C:/xampp/licenses/"
<Directory "C:/xampp/licenses">
Options +Indexes
<IfModule autoindex_color_module>
DirectoryIndexTextColor "#000000"
DirectoryIndexBGColor "#f8e8a0"
DirectoryIndexLinkColor "#bb3902"
DirectoryIndexVLinkColor "#bb3902"
DirectoryIndexALinkColor "#bb3902"
</IfModule>
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
Alias /webalizer "C:/xampp/webalizer/"
<Directory "C:/xampp/webalizer">
<IfModule php_module>
<Files "webalizer.php">
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
</IfModule>
Dans le screen de ma config ci-dessous, mon fichier http-xampp.conf contient tous les paramétrages pour exécuter php 7, mais j’ai aussi les fichiers nécessaires pour php 8 et php 5.6.
Eh voilà ! Maintenant, pour exécuter XAMPP avec la version de php que l’on souhaite, il suffit de renommer le fichier de config qu’on veut utiliser en http-xampp.conf et de suffixer les autres comme vu plus haut. Et surtout, ne pas oublier de redémarrer Apache.
Bonjour,
Merci beaucoup pour ce tuto détaillé et bien utile. 🙂
Je n’arrive malheureusement pas à démarrer apache avec PHP5.6. J’ai beau parcourir le fichier de configuration, je n’arrive pas à trouver ce qui manque. Et il n’y a rien dans les logs… Pourriez-vous en dire un peu plus sur votre fichier de conf dans cette version SVP ? Merci.
Autre chose : les doubles backslashes sont devenus des simples dans votre listing de modifications à faire.
De plus, en ce qui me concerne, j’ai bien un fichier « libsqlite3.dll » en PHP7.
C’est dans la version 5 qu’il n’existe pas.
Patric
Bonjour Patric,
Pouvez-vous me dire quelle version de Xampp vous avez ?
Visiblement, il y a quelques différences avec ce que j’ai.
Pour les doubles backslash, c’est une coquille en effet ! Je vais faire la correction. Merci de me l’avoir fait remarquer.
En attendant, voici ce que contient mon fichier de configuration pour php 5.6 :
Merci pour votre réponse rapide !
Hélas même avec votre fichier ça ne fonctionne toujours pas.
J’utilise xampp-windows-x64-8.2.0-0-VS16 (dernière version en date).
Et le dossier PHP de xampp-windows-x64-5.6.40-1-VC11.
Au lancement d’Apache j’ai le message d’erreur :
Error: Apache shutdown unexpectedly.
This may be due to a blocked port, missing dependencies,
improper privileges, a crash, or a shutdown by another method.
Press the Logs button to view error logs and check
the Windows Event Viewer for more clues
If you need more help, copy and post this
entire log window on the forums
Mais je ne trouve rien dans les logs ni dans l’event viewer de Windows…
Et tout fonctionne bien avec PHP 7.4.
Si je continue de bloquer, je posterai sur le forum de Xampp.
Merci en tout cas !