Pourquoi changer de version de PHP quand on peut utiliser plusieurs versions de PHP version en même temps que une seule installation de xampp ? Avec une seule installation de xampp, vous avez 2 possibilités :
-
Exécutez une ancienne version de PHP pour seulement le répertoire de votre ancien projet : Ceci est utile la plupart du temps, vous pouvez avoir un ou deux anciens projets que vous avez l'intention d'exécuter avec une ancienne version de PHP. vieux projets que vous avez l'intention d'exécuter avec une ancienne version de PHP. Il suffit de configurer xampp pour qu'il exécute l'ancienne version de PHP uniquement pour ces répertoires de projets.
-
Exécutez une ancienne version de PHP sur un port séparé de xampp : Parfois, vous pouvez vous mettez à jour un ancien projet vers la dernière version de PHP et que vous devez même projet sur la nouvelle et l'ancienne version de PHP. Vous pouvez alors définir une ancienne version de PHP sur un port différent (disons 8056) Ainsi, lorsque vous allez dans http://localhost/any_project/
xampp exécute PHP 7 et lorsque vous allez dans http://localhost:8056/any_project/
xampp exécute PHP 5.6.
-
Exécutez une ancienne version de PHP sur un serveur virtuel : Vous pouvez créer un serveur virtuel comme localhost56 pour exécuter PHP 5.6 alors que vous pouvez utiliser PHP 7 sur localhost.
Mettons cela en place.
Étape 1 : Télécharger PHP
Vous avez donc PHP 7 qui tourne sous xampp, et vous voulez y ajouter une version plus ancienne de PHP, disons PHP 5.6. Téléchargez l'archive zip de la version nts (Non Thread Safe) de PHP à l'adresse suivante php.net (voir archives pour les anciennes versions) et extraire les fichiers sous c:\xampp\php56
. La version thread safe n'inclut pas php-cgi.exe.
Étape 2 : Configurer php.ini
Ouvrir c:\xampp\php56\php.ini
dans le bloc-notes. Si le fichier n'existe pas, copiez php.ini-development
à php.ini
et l'ouvrir dans le bloc-notes. Décommentez ensuite la ligne suivante :
extension_dir = "ext"
Étape 3 : Configurer apache
Ouvrez le panneau de contrôle xampp, cliquez sur le bouton de configuration pour apache, et cliquez sur Apache (httpd-xampp.conf)
. Un fichier texte s'ouvrira, avec les paramètres suivants au bas du fichier :
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>
</Directory>
Note : Vous pouvez ajouter d'autres versions de PHP à votre installation xampp en suivant les étapes 1 à 3 si vous le souhaitez.
Étape 4 (option 1) : [Ajouter des répertoires pour exécuter une version spécifique de PHP].
Vous pouvez maintenant définir des répertoires qui fonctionneront en PHP 5.6. Ajoutez simplement ce qui suit au bas du fichier de configuration pour définir les répertoires.
<Directory "C:\xampp\htdocs\my_old_project1">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</Directory>
<Directory "C:\xampp\htdocs\my_old_project2">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</Directory>
Étape 4 (option 2) : [Exécuter une ancienne version de PHP sur un port séparé].
Maintenant, pour configurer PHP v5.6 sur le port 8056, ajoutez le code suivant au bas du fichier de configuration.
Listen 8056
<VirtualHost *:8056>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</VirtualHost>
Étape 4 (option 3) : [Exécuter une ancienne version de PHP sur un serveur virtuel].
Pour créer un virtualhost (localhost56) sur un répertoire (htdocs56) pour utiliser PHP v5.6 sur http://localhost56 créez le répertoire htdocs56 à l'endroit désiré et ajoutez localhost56 à votre fichier hosts ( voir comment ), puis ajoutez le code suivant au bas du fichier httpd-xampp.conf.
<VirtualHost localhost56:80>
DocumentRoot "C:\xampp\htdocs56"
ServerName localhost56
<Directory "C:\xampp\htdocs56">
Require all granted
</Directory>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</VirtualHost>
Finition : Sauvegarder et redémarrer Apache
Sauvegardez et fermez le fichier de configuration, redémarrez apache à partir du panneau de contrôle xampp. Si vous avez choisi l'option 2, vous pouvez voir le port supplémentaire (8056) listé dans votre panneau de contrôle xampp.
Mise à jour pour l'erreur :
En-tête malformé provenant de script 'php-cgi.exe' : Mauvais en-tête
Si vous rencontrez l'erreur ci-dessus, ouvrez httpd-xampp.conf
et commentez la ligne suivante avec un # en tête (caractère dièse).
SetEnv PHPRC "\\path\\to\\xampp\\php"
0 votes
Je ne pense pas qu'il y ait une solution de rechange à ce que vous voulez faire autre que la mise à niveau. De plus, vous ne devriez pas trouver des moyens de rendre compatibles les API anciennes et dépréciées. Elles devraient être totalement supprimées. Évidemment, c'est beaucoup de travail, mais cela garantirait la tranquillité d'esprit.
1 votes
J'arrête et je démarre Apache lorsque je veux changer de version de PHP dans MAMP. C'est pénible, mais ça marche.
0 votes
Vous pouvez faire un double démarrage
0 votes
Vous pouvez créer des hôtes virtuels et spécifier la version de php pour chacun d'eux.
0 votes
Je ne peux pas le signaler comme étant un doublon, mais c'est ce que vous recherchez : stackoverflow.com/questions/34757122/ Je suis la personne la plus stupide
0 votes
J'ai posté une solution qui vous permet de télécharger n'importe quelle version de PHP dans son propre dossier, et de configurer Apache pour l'utiliser. Essayez-la et faites-moi savoir si cela répond à vos besoins.
0 votes
J'ai adopté la solution suivante avec une seule installation XAMPP : stackoverflow.com/questions/34757122/ qu'en pensez-vous ?
0 votes
Avez-vous réellement besoin d'être capable d'exécuter les deux versions de PHP côte à côte en même temps en production, ou avez-vous simplement besoin de passer de l'une à l'autre sur votre station de travail de développement ? Je pose la question car votre question semble suggérer le premier cas (ou du moins ne l'exclut pas explicitement), alors que la plupart des réponses ci-dessous ne traitent que du second cas.
3 votes
@IlmariKaronen Je veux passer de l'un à l'autre sur votre poste de développement. Je veux simplement utiliser PHP 5 quand je fais le projet A, je veux PHP 7 quand je fais le projet B. Même la réponse la mieux notée ne fonctionne pas, je ne la trouve pas... Et beaucoup d'utilisateurs...
0 votes
Et si vous pouviez utiliser différentes versions de
PHP
pour différents répertoires soushtdocs
répertoire ? Consultez les instructions de configuration les plus simples que j'ai postées. en dessous de .0 votes
Et tant que vous y êtes, j'espère que vous connaissez les risques (d'injection SQL) de l'utilisation de
mysql_
les commandes. Utilisez PDO oumysqli_
à la place. Plus d'informations ici sitepoint.com/migrate-from-the-mysql-extension-to-pdo0 votes
Est-ce que docker fonctionnera dans ce scénario