web-dev-qa-db-fra.com

Est-il possible d'utiliser deux versions PHP dans XAMPP?

Nous utilisons XAMPP avec PHP 7.0 car nos nouveaux produits nécessitent PHP 7.

Mais il y a d'anciens projets qui utilisent des fonctions comme mysql_connect, etc. Ceux-ci sont supprimés dans PHP 7.0.

Alors, est-il possible de changer facilement les versions de PHP dans XAMPP?

Note: S'il vous plaît, ne suggérez pas de mettre à niveau votre ancien projet pour qu'il soit compatible avec les nouvelles versions car je ne suis pas en mesure de le faire à cause de cette décision que je ne peux pas obtenir en tant que développeur (juste un employé) .

130

Vous pouvez télécharger toutes les versions de PHP dont vous avez besoin et les placer dans leurs propres répertoires, par exemple.

c:\php5\

c:\php7\

Tout ce que vous avez à faire est d’indiquer à votre serveur Web (Apache) la version de PHP à utiliser, ce que vous faites en chargeant le module approprié. Dans Apache, vous pouvez le faire en recherchant le fichier httpd.conf puis en modifiant la ligne appropriée:

LoadModule php7_module c:\php7\libphp7.so

Vous devrez bien sûr trouver les bons chemins - ceci est juste pour illustration.

Enregistrez httpd.conf et redémarrez votre serveur. Notez que si vous ne le redémarrez pas, les modifications ne prendront effet.

Il n’existe aucun commutateur graphique pour cela, vous devez éditer le fichier .conf puis redémarrer Apache. Cela ne prend que quelques secondes et vous pouvez même commenter une version afin que le "changement" ne prenne que quelques frappes, par exemple.

Utilisez PHP 5:

LoadModule php5_module c:\php5\libphp5.so
#LoadModule php7_module c:\php7\libphp7.so

Utilisez PHP 7:

#LoadModule php5_module c:\php5\libphp5.so
LoadModule php7_module c:\php7\libphp7.so

Vous n'avez pas besoin de plusieurs versions de XAMPP, ou pour effectuer un double démarrage, ou utiliser une machine différente, ou l’une des autres "solutions" qui ont suggéré des solutions de contournement compliquées. L'OP souhaite utiliser XAMPP et lui indiquer quelle version de PHP utiliser. C’est le moyen le plus rapide et le plus efficace de le faire et ne nécessite qu’une installation de XAMPP.

Edit 1-Nov-2017: Apparemment, certaines personnes disent qu'il n'y a pas de fichiers .so sous Windows. La réponse que j'ai donnée est adaptée de la manière dont les choses sont configurées sur mon Mac (qui utilise des fichiers .so à la place de .dll). Le principe de la réponse est cependant toujours parfaitement correct. Vous utilisez le fichier de configuration d'Apache, httpd.conf pour spécifier where le module PHP (.so ou .dll) se trouve sur votre système. Donc, la seule différence pour Windows serait le nom du fichier et/ou l’emplacement du chemin. La réponse que j'ai donnée est également correcte pour une installation Apache/PHP de Vanilla (sans XAMPP du tout).

80
Andy

Pourquoi basculer entre PHP versions lorsque vous pouvez utiliser plusieurs PHP version simultanément une installation unique de xampp ? Avec une seule installation xampp, vous avez 2 options:

  1. Lancez une ancienne version de PHP uniquement pour le répertoire de votre ancien projet: Ceci servira la plupart du temps, vous pourrez avoir un ou deux anciens projets que vous avez l'intention d'exécuter avec l'ancienne version PHP. Il suffit de configurer xampp pour qu’il exécute la version antérieure PHP uniquement pour ces répertoires de projet.

  2. Exécutez une ancienne version de PHP sur un port séparé de xampp: Il est parfois possible de mettre à jour un ancien projet avec la dernière PHP version lorsque vous devez exécuter le même projet sur les versions antérieures et antérieures de PHP. Ensuite, vous pouvez définir une ancienne version de PHP sur un autre port (disons 8056). Ainsi, lorsque vous accédez à http://localhost/any_project/ xampp exécute PHP 7 et lorsque vous accédez à http://localhost:8056/any_project/ xampp exécute PHP 5.6.

  3. Exécutez une ancienne version PHP sur un hôte virtuel: Vous pouvez créer un hôte virtuel tel que localhost56 pour exécuter PHP 5.6. alors que vous pouvez utiliser PHP 7 sur localhost.

Permet de le configurer.

Étape 1: Téléchargez PHP

Donc, vous avez PHP 7 sous xampp, vous voulez y ajouter une ancienne version PHP, disons PHP 5.6. Téléchargez la version nts (Non Thread Safe) de PHP archive Zip de php.net (voir archive pour les versions antérieures) et extrayez les fichiers sous c:\xampp\php56. La version thread-safe n'inclut pas php-cgi.exe.

Étape 2: Configurez php.ini

Ouvrez le fichier c:\xampp\php56\php.ini dans le bloc-notes. Si le fichier n'existe pas, copiez php.ini-development vers php.ini et ouvrez-le dans le bloc-notes. Puis décommentez la ligne suivante:

extension_dir = "ext"

Étape 3: Configurez Apache

Ouvrez le panneau de configuration de xampp, cliquez sur le bouton de configuration pour Apache, puis sur Apache (httpd-xampp.conf). Un fichier texte s'ouvrira, mettez 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>

Remarque: Vous pouvez ajouter plusieurs 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 les répertoires à exécuter sous PHP 5.6. Il suffit d’ajouter 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 la version antérieure PHP sur un port séparé]

Maintenant, pour définir 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 version antérieure de PHP sur un hôte virtuel]

Pour créer un hôte virtuel (localhost56) sur un répertoire (htdocs56) afin d'utiliser PHP v5.6 sur http: // localhost56 , créez le répertoire htdocs56 à l'emplacement de votre choix 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>

Terminer: Enregistrez et redémarrez Apache.

Enregistrez et fermez le fichier de configuration, redémarrez Apache à partir du panneau de configuration de xampp. Si vous avez opté pour l'option 2, le port supplémentaire (8056) est répertorié dans le panneau de configuration de xampp.

enter image description here

Mise à jour pour erreur:
En-tête mal formé à partir du script 'php-cgi.exe': En-tête incorrect

Si vous rencontrez l'erreur ci-dessus, ouvrez httpd-xampp.conf à nouveau et mettez en commentaire la ligne suivante avec un # (caractère de hachage) en tête.

SetEnv PHPRC "\\path\\to\\xampp\\php"
76
Munim Munna

Vous pouvez télécharger et installer deux xampps différents, comme je le fais: (le premier est php7 le second est php5) enter image description here

et si vous ne voulez pas faire cela, je vous suggère d'utiliser wamp et de changer de version comme indiqué ici .

28
Maulik Gangani

Je vous recommande d'utiliser Docker, cela vous permet de scinder l'environnement en plusieurs composants et de mélanger et assortir ceux que vous voulez à tout moment.

Docker vous permettra d’exécuter un conteneur avec MySQL, un autre avec PHP. Comme il s’agit d’images distinctes, vous pouvez avoir deux conteneurs, un PHP 5 un autre PHP 7, que vous lanciez le fichier que vous souhaitez et le port 80 pouvant être mappé sur les deux conteneurs.

https://hub.docker.com propose une large gamme d'images préconfigurées que vous pouvez installer et exécuter sans tracas.

J'ai également ajouté portainer en tant qu'image, ce qui vous permet de gérer les différents aspects de la configuration de votre menu fixe - à partir d'une image du menu fixe (j'ai démarré ce conteneur au démarrage pour éviter de devoir utiliser le ligne de commande). Cela ne fait pas tout pour vous et il est parfois plus facile de configurer et de lancer les images pour la première fois à partir de la ligne de commande, mais une fois la configuration effectuée, vous pouvez les démarrer et les arrêter via une interface Web.

Il est également possible d'exécuter les deux conteneurs en même temps et de mapper des ports distincts sur chacun. Le port 80 peut donc être mappé sur PHP 5 et 81 sur PHP 81 (ou PHP 7 si vous regardez ceci en 2017).

Il existe différents didacticiels sur l’installation de Docker ( https://docs.docker.com/engine/installation/ ) et d’autres types de "comment taper". Essayez http://www.masterzendframework.com/docker-development-environment/ pour une configuration d'environnement de développement.

12
Nigel Ren

Vous pouvez avoir deux versions différentes de XAMPP.

  • Téléchargez ces fichiers depuis https://www.apachefriends.org/download.html et installez-les dans un répertoire de votre choix, par exemple, dans C:\5.6.31\xampp et C:\7.1. 18\xampp.
  • Après chaque installation, allez dans le répertoire installé (ex. C:\5.6.31\xampp, C:\7.1.18\xampp) et lancez le fichier "setup_xampp.bat" et vous devriez voir quelque chose comme this. =
  • Vous pouvez créer des raccourcis de "xampp-control.exe" sur votre bureau (cliquer avec le bouton droit de la souris sur "xampp-control.exe" Envoyer à -> Bureau) et renommer les raccourcis, par exemple. "xampp 5.6.31" et "xampp 7.1.8".
  • Lancez le panneau de configuration XAMPP en double-cliquant sur "xampp-control.exe" ou sur le raccourci créé précédemment et démarrez les serveurs Apache et MySQL.
  • Pour tester l'installation, ouvrez votre navigateur et tapez 127.0.0.1 ou localhost dans la barre d'adresse. Vous devriez voir l'écran de démarrage de XAMPP.
  • N'ouvrez pas plus d'un panneau de commande XAMPP.
  • XAMPP désinstaller? Supprimez simplement le répertoire "xampp". Mais avant, veuillez arrêter Apache et mysql.
  • C'est tout. Vous pouvez utiliser différentes versions php en ouvrant le panneau de configuration XAMPP correspondant.
6
og1842

J'utilise Uniserver.

Il a cette fonctionnalité intégrée.

http://www.uniformserver.com/

C'est si simple.

Uniform Server est une solution de serveur WAMP légère et gratuite pour Windows. Moins de 24 Mo, conception modulaire, inclut les dernières versions d'Apache2, Perl5, PHP (bascule entre PHP53, PHP54, PHP55 ou PHP56), MySQL5 ou MariaDB5, phpMyAdmin ou Adminer4. Aucune installation requise! Pas de poussière de registre! Juste déballer et allumer!

Il fonctionne même sur un lecteur flash. A l’émulation cron, supporte Perl, mariaDB, quelques versions de Mysql, le serveur filezilla et quelques autres choses.

enter image description here

5
ArtisticPhoenix

Oui, vous pouvez. Je suppose que vous avez déjà installé un xampp. Alors,

  • Fermez toutes les instances xampp. À l'aide du gestionnaire de tâches, arrêtez Apache et mysqld.
  • Puis renommez xampp en xampp1 ou quelque chose après le nom de xampp.
  • Téléchargez maintenant l’autre version de xampp. Créez un nom de dossier xampp uniquement. Installez le xampp téléchargé ici.
  • Désormais, en fonction de la version de xampp de votre exigence, il suffit de renommer le dossier cible en xampp uniquement et en attribuant un autre nom à un autre dossier.

C'est comme ça que je travaille avec plusieurs xampp installés

4
shuvro

exécutez ceci dans l'invite de commande Windows (cmd.exe).

set PATH=C:\xampp\php;%PATH%

changez-le en fonction de l'emplacement de l'installation de PHP 7.

3
Adam Endvy

À moins que ce ne soit absolument et définitivement XAMPP, vous pouvez essayer d'obtenir ce que vous voulez avec WAMP. WAMP est à peu près la même chose dans des emballages différents.

Une fois que vous l'avez installé, vous pouvez simplement basculer entre les versions php ici:

enter image description here

Vous pouvez installer autant de versions de PHP que vous avez besoin.

Voici comment cela se fait en détail.

Allez juste ici: téléchargement de WAMP

Sélectionnez ensuite votre serveur de base, par exemple. dernière avec php7.

Ensuite, lorsque WAMP 3 est installé, allez dans le dossier: addons et sélectionnez la version php (ou les versions) que vous recherchez. Ils offrent des variantes de PHP à partir de 5.3.29, ce qui devrait fonctionner avec mysql_connect.

Pour installer l'addon, pendant l'installation (double-cliquez sur le fichier exe), pointez simplement sur le dossier où vous avez installé votre WAMP 3.

Ensuite, vous pouvez utiliser le contenu d'autres dossiers, tels que: applications , etc. pour ajouter davantage de fonctionnalités

Tout est interfacé, vous pouvez donc vous concentrer sur le codage et ne pas pirater votre environnement.

3
Jeffz

Il est possible d'avoir plusieurs versions de PHP configurées avec une seule installation XAMPP. Les instructions ci-dessous fonctionnent pour Windows.

  1. Installez la dernière version de XAMPP pour Windows (dans mon cas, c'était avec PHP 7.1)
  2. Assurez-vous qu'Apache ne s'exécute pas à partir du panneau de configuration XAMPP.
  3. Renommez le répertoire php dans le répertoire d'installation XAMPP, tel que C:\xampp\php devient C:\xampp\php-7.1.11.
  4. Téléchargez la version de PHP que vous souhaitez utiliser en plus (exemple: PHP 5.4.45 )
  5. Déplacez le répertoire php de la version que vous avez téléchargée vers le répertoire d'installation XAMPP. Renommez-le pour qu'il inclue la version PHP. Tels que C:\xampp\php-5.4.45.

Maintenant, vous devez éditer la configuration de XAMPP et Apache:

  1. Dans C:\xampp\Apache\conf\httpd.conf, localisez les paramètres XAMPP pour PHP, vous devriez le changer pour quelque chose comme:

Où vous devez commenter (avec #) les autres versions PHP afin qu'un seul Include soit interprété à la fois.

#XAMPP settings PHP 7
Include "conf/extra/httpd-xampp.conf.7.1"

#XAMPP settings PHP 5.4.45
#Include "conf/extra/httpd-xampp.conf.5.4.45"
  1. Maintenant, dans le répertoire C:\xampp\Apache\conf\extra, renommez httpd-xampp.conf en httpd-xampp.conf.7.1 et ajoutez un nouveau fichier de configuration pour httpd-xampp.conf.5.4.45. Dans mon cas, j'ai copié le fichier de configuration d'une autre installation de XAMPP pour PHP 5.5, la syntaxe pouvant être légèrement différente pour chaque version.

  2. Editez httpd-xampp.conf.5.4.45 et httpd-xampp.conf.7.1 et remplacez-y toute la référence au répertoire php par la nouvelle version php-X.X. Au moins 10 modifications doivent être apportées ici pour chaque fichier.

  3. Vous devez maintenant éditer le fichier php.ini pour les deux versions. Par exemple, pour php 7.1, éditez C:\xampp\php-7.1.11\php.ini où vous allez remplacer le chemin du répertoire php pour include_path, browscap, error_log, extension_dir ..

Et c'est tout. Vous pouvez maintenant démarrer Apache à partir du Panneau de configuration XAMPP. Et pour passer d'une version à une autre, il vous suffit de modifier C:\xampp\Apache\conf\httpd.conf et de modifier la version PHP incluse avant de redémarrer Apache.

3
maxime_039

Vous n'avez pas besoin de perdre votre temps avec cette configuration, utilisez simplement MAMP :)

MAMP a une interface de sélection de version PHP.

2
Gokturk

Suivez ces étapes faciles . J'utilise actuellement XAMPP sur PHP 7.2, mais il me faut PHP 5.6 pour travailler sur d'anciens projets.

ÉTAPE 1

Téléchargez la version threadée de PHP sur https://windows.php.net/download

Placez des fichiers sur votre [Lecteur]:\xampp\php5.6

  • Renommez le dossier en fonction de la version de PHP

ÉTAPE 2

Copier [Lecteur]:\xampp\Apache\conf\extra\httpd-xampp.conf

Renommez-le en [Lecteur]:\xampp\Apache\conf\extra\httpd-xampp5.6.confRename le fichier en fonction de la version de PHP.

ÉTAPE 3

Editez le 'httpd-xampp5.6.conf' nouvellement créé

en gros, vous devez changer toutes les sources _. et [.dll] PHP.

Avant

LoadFile "C:/xampp/php/php7ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule php7_module "C:/xampp/php/php7Apache2_4.dll"

Après

LoadFile "C:/xampp/php5.6/php5ts.dll"
LoadFile "C:/xampp/php5.6/libpq.dll"
LoadModule php5_module "C:/xampp/php5.6/php5Apache2_4.dll"

Voici mon fichier: https://Gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec

ÉTAPE 4

Editez le fichier [Lecteur]:\xampp\Apache\conf\httpd.conf

Avant

# XAMPP settings
Include "conf/extra/httpd-xampp.conf"

Après

# XAMPP settings
Include "conf/extra/httpd-xampp5.6.conf"
  • Vous pouvez simplement éditer cette ligne lors du passage à une version différente

ÉTAPE 5

Éditez votre configuration PHP 5.6 - php.ini

Ajoutez votre répertoire d'extension: rép_extension = "C:\xampp\php5.6\ext"

ÉTAPE 6

Démarrer Apache

ÉTAPE 7

Editez le chemin de la variable d'environnement PHP sous Windows

1
mpalencia

C'est probablement la réponse la moins technique à la question, mais c'est aussi la plus facile à accomplir.

Si vous avez deux lecteurs tels que C: et D:, vous pouvez installer une instance distincte de XAMPP sur les deux lecteurs avec des versions php différentes. Cela m'a pris moins de 10 minutes à faire et est le moins sujet aux erreurs.

Je viens de créer deux raccourcis de bureau vers xampp-control.exe et de nommer les raccourcis d'après leur version php. J'espère que cela aide quelqu'un comme moi qui préfère une solution très rapide et sale.

1
JacobRossDev

J'avais besoin de faire la même chose, alors j'ai cherché comment et suis venu pour empiler le débordement, où l'OP avait le même problème ... Donc, mes conclusions ... j'ai essayé de renommer des fichiers de toutes les directions ET ma conclusion était que ça me prenait au fond trop long. SOOOO j'ai fini par installer la version 7 à partir d'ici:

https://www.apachefriends.org/index.html (élimine les services et quitte xampp avant de tenter)

Lorsqu'on lui a demandé où mettre le nom du répertoire, il doit en être ainsi (donnez-lui un nom différent):

enter image description here

et

DONEZO! Maintenant, assurez-vous de supprimer tous les services et de quitter avant de permuter, et vous aurez 2 envois XAMPP stériles pour jouer.

Hourra! maintenant je peux réellement me rendre au travail!

0

Peut-être un peu tard, mais j'utilise un lot pour renommer les dossiers PHP (une version légèrement modifiée de phpswitch que j'ai trouvée il y a des années).

Vous copiez les différents dossiers dans votre installation XAMPP. Chaque dossier PHP (à l'exception du dossier actif) reçoit le numéro de version sous la forme d'un suffixe (par exemple. php_5.6.32). Dans TOUS LES PHP dossiers, un fichier (PHP_VERSION) est créé. Il contient uniquement le numéro de version correspondant. Le script peut saisir cette information. Mais tout cela est décrit dans le fichier README.

Depuis PHP7 le httpd-xampp.conf charge le php7ts.dll à la place du php5ts.dll. J'ai donc dû étendre le script (PHPSwitch.php) pour renommer ces fichiers de configuration en suivant la même approche.

    $renameCur = new PHPSwitch_Rename($currInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName'] . '_' . $currInst['version']);
    $renameNew = new PHPSwitch_Rename($newInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName']);

    $Apache_curent      = $this->_cfg["phpInstallationsPath"]."Apache/conf/extra/httpd-xampp.conf";
    $Apache_curent_rename   = $this->_cfg["phpInstallationsPath"]."Apache/conf/extra/httpd-xampp_".$currInst['version'].".conf";
    $Apache_new             = $this->_cfg["phpInstallationsPath"]."Apache/conf/extra/httpd-xampp_".$newInst['version'].".conf";
    $Apache_new_rename      = $this->_cfg["phpInstallationsPath"]."Apache/conf/extra/httpd-xampp.conf";

    $renameCur_Apache_conf = new PHPSwitch_Rename($Apache_curent, $Apache_curent_rename);
    $renameNew_Apache_conf = new PHPSwitch_Rename($Apache_new, $Apache_new_rename);

    $transaction = new PHPSwitch_Rename_Transaction();
    $transaction->add($renameCur);
    $transaction->add($renameNew);
    $transaction->add($renameCur_Apache_conf);
    $transaction->add($renameNew_Apache_conf);
0
Ebby

Je travaille sur un projet de dix ans au travail. Donc 5.6 est ma valeur par défaut. Il existe également des petits projets plus anciens qui ne fonctionnent qu'avec la version 5.2 et je souhaite également travailler sur de nouvelles versions pour mes projets personnels avec la version 7.3.8.

Voici ce que j'ai fait pour ajouter 5.2 et 7.3.8 sur la version 5.6 par défaut.

1 - Versions téléchargées php TS;

2 - Extrait dans le dossier c:\xampp\php738 et c:\xampp\php52 dans l'ordre

3 - Ajout de ces lignes au bas de httpd-xampp.conf (ou httpd.conf);

*** AVIS IMPORTANT: Vous ne devez PAS utiliser le nom d'alias de script comme nom de dossier cible, ils doivent être différents. (par exemple/php7x est ok,/php7 n'est pas)

PHP 7.3.8 pour le dossier D:\www\php7

ScriptAlias /php7x "C:/xampp/php738"
Action application/x-httpd-php7-cgi /php7x/php-cgi.exe
<Directory "C:/xampp/php738">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

<Directory "D:\www\php7">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php7-cgi
    </FilesMatch>
</Directory>

PHP 5.2 pour le dossier D:\www\php52

ScriptAlias /phpold "C:/xampp/php52"
Action application/x-httpd-phpold-cgi /phpold/php-cgi.exe
<Directory "C:/xampp/php52">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

<Directory "D:\www\php52">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-phpold-cgi
    </FilesMatch>
</Directory>

Merci à @ Munim Munna pour la réponse détaillée, je voulais partager un échantillon solide avec l’avis important ci-dessus.

0
Erdinç Çorbacı