77 votes

Comment avoir deux versions de PHP installées et passer facilement de l'une à l'autre ?

Je veux avoir à la fois PHP 5.2.17 et PHP 5.3.5 installés sur ma machine Ubuntu et changer selon mes besoins. Comment puis-je réaliser cela ?

61voto

Thomas Points 715

Vous pouvez utiliser un gestionnaire de version de php pour y parvenir. Différents gestionnaires de version sont disponibles comme :

Mon préféré est phpbrew. J'espère que cela vous aidera.

20voto

leon Points 656

Usted peut exécuter deux versions différentes de PHP en même temps, mais ce n'est pas aussi simple que de les installer avec apt-getting. Vous devez faire tourner une version installée séparément et la servir en fonction des paramètres de votre configuration Apache.

Vous pouvez le faire en utilisant fastcgi par exemple : ce que vous cherchez est la configuration que vous voyez sur cette page . Vous ajoutez un gestionnaire différent dans votre configuration en fonction de la situation/du port/du domaine dont vous avez besoin. L'astuce, après avoir installé les deux versions, est cette étape :

\===de cette page==

  1. La dernière étape consistait à créer des hôtes virtuels. Au final, j'ai trois fichiers dans /etc/apache2/sites-enabled : 000-default, php5.3.17 et php5.4.7 avec le contenu suivant

par défaut :

    <VirtualHost *:80>
      ServerName localhost
      DocumentRoot /var/www
      <Directory "/var/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php5317.fcgi
      </Directory>
    </VirtualHost>

php5.3.17 :

    <VirtualHost *:80>
      ServerName 5317.localhost
      DocumentRoot /var/www
      <Directory "/var/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php5317.fcgi
      </Directory>
    </VirtualHost>

php5.4.7 :

    <VirtualHost *:80>
      ServerName 547.localhost
      DocumentRoot /var/www
      <Directory "/var/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php547.fcgi
      </Directory>
    </VirtualHost>

Voir pour l'installation complète la question liée . N'oubliez pas de regarder également les deux liens dans l'en-tête, ils ressemblent à de beaux tutoriels (mais moins compressés). Ce site y Ce

(Ne vous laissez pas décourager par le fait que la question liée est une question importante à laquelle il n'y a pas de réponse reconnue. La méthode devrait fonctionner (et fonctionne) correctement, mais l'utilisateur a oublié d'utiliser la fonction <?php et utilisé <? avec les étiquettes courtes désactivées, voir les commentaires)

14voto

Marcelo Ágil Points 240

J'ai installé php 5.6 et 7.0 mais malgré tous les conseils, la version 5.6 est restée en place. Cette commande a donc sauvé la mise (dans mon cas, j'ai choisi l'option 1 et redémarré apache) :

sudo update-alternatives --config php

6voto

Daniel Pineda Points 61

Celui-là marche pour moi : https://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

Identique au script de "Growling Flea", mais utilisant de nouvelles versions.

Ajouter le PPA

Les paquets PHP 5.6 et PHP 7.0 proviennent d'un PPA tiers, et ne sont pas fourni par les dépôts officiels d'Ubuntu de Canonical. Les PPAs que je recommande ici sont ceux d'Ondrej Surý qui empaquette PHP pour Debian (qui est ensuite utilisé par Ubuntu), donc bien qu'il ne s'agisse pas d'un référentiel officiel officiel, il n'est pas vraiment aléatoire ! Le PPA lui-même est aquí

Pour ajouter le PPA à votre installation :

sudo add-apt-repository ppa:ondrej/php  

Ensuite, nous voudrons aussi obtenir des informations sur ce que propose ce nouveau ce nouveau PPA, alors exécutez :

sudo apt-get update   

Installer les nouvelles versions de PHP

J'avais déjà installé certains des paquets php5, mais je n'ai pas mais je n'ai rien désinstallé, j'ai juste laissé apt faire ce qu'il voulait faire lorsque quand je lui ai demandé d'installer les nouvelles versions :

sudo apt-get install php5.6 php7.0

Cela a donné lieu à de nombreuses plaintes de la part d'apt et à de nombreux conflits. La première résolution proposée était de supprimer tous les paquets php5 afin que PHP 5.6 puisse être installé - j'ai donc accepté la proposition d'apt. première suggestion.

J'utilise Apache, donc cette configuration m'a donné Apache avec les modules php5.6 et php7.0 disponibles. disponibles, et le module php5.6 est effectivement chargé.

En plus du PHP lui-même, toutes les extensions et autres outils que l'on peut attendre de PHP sont disponibles pour les deux versions de PHP. facile d'ajouter les modules dont vous avez besoin. J'ai été très, très impressionné de voir à quel point c'est bien fait.

Configurer et changer de version

Maintenant, vous avez deux versions complètement différentes de PHP installées sur votre ordinateur. système, alors regardons où sont passées toutes les pièces !

Les fichiers de configuration sont tous dans /etc/php/5.6 y /etc/php/7.0 respectivement - à l'intérieur, c'est ici que vous pouvez configurer quelles extensions sont chargées, les paramètres ini, et tout le reste pour chaque version. en isolation.

Je suis un utilisateur d'apache, et comme je l'ai mentionné, les deux modules sont disponibles. Donc pour passer de l'un à l'autre, je dois faire ce qui suit :

sudo a2dismod php5.6
sudo a2enmod php7.0
sudo service apache2 restart

Pour les utilisateurs de nginx, les changements sont presque aussi faciles, Digital Ocean a une bonne documentation à ce sujet (ils ont vraiment une bonne documentation !). leur guide : https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04 car il comprend une section sur la reconfiguration de nginx pour utiliser une autre version de PHP.

Depuis la ligne de commande, j'ai à la fois php5.6 et php7.0 disponibles en tant que commandes. J'ai aussi toujours une commande php - regardez dans /etc/alternatives pour voir qu'il s'agit d'un lien symbolique vers une version particulière de PHP cli*. Vous pouvez Vous pouvez également vérifier rapidement laquelle utilise la vôtre en exécutant php -v .

* Plus précisément, exécutez which php pour voir quelle version de PHP est utilisée, mais cela mènera probablement à /usr/bin/php qui, pour est lui-même un lien symbolique vers le /etc/alternatives/php comando.

Travailler avec des extensions

Ce PPA est fourni avec le paquetage habituel php-pear qui offre la commande pecl pour les deux versions de PHP, de sorte que toutes les extensions qui sont disponibles via PECL peuvent être installées de la manière habituelle. Vous aurez également besoin des en-têtes Vous aurez également besoin des en-têtes appropriés, donc soit php5.6-dev, soit php7.0-dev. installé.

Lorsque l'installation de pecl sera terminée, vous recevrez une note vous demandant d'ajouter le fichier *.so à votre php.ini. *.so à votre php.ini ; en fait, la meilleure chose à faire ici est de regarder ce qui se trouve dans le fichier /etc/php/mods-available . Il y aura quelques modules déjà présents, chacun dans son propre fichier nommé après l'extension et se terminant par .ini. Vous pouvez en copier un pour l'utiliser comme modèle ou créer ou créer le vôtre et y mettre toute la configuration nécessaire pour l'extension (au minimum, vous avez besoin de extension=[extensionName].so ).

Une fois la nouvelle extension disponible dans les modules, activez-la et vérifiez-la ensuite en faisant :

sudo phpenmod extension  
php -m  

Cela créera les liens symboliques aux bons endroits pour que votre version actuelle de PHP pour charger ce module, et vous devriez le voir dans la liste des des modules affichée par la fonction php -m . Conseil de pro : si vous ne le voyez pas dans la sortie sortie, faites défiler jusqu'en haut de la sortie et regardez s'il n'y a pas des messages d'erreur utiles.

3voto

PegasusOnlin Points 31

De ce poste J'ai juste mis dans l'ordre les commandes et expliqué dans l'ordre ce qui m'a été servi (Ubuntu 12.04).

Cette méthode vous donne :

  1. script avec menu, qui permet de basculer entre les versions de php installées (pas les deux en même temps).

  2. les différentes versions de PHP installées sur votre serveur

  3. fichiers de conf séparés

Installer toutes les versions dont vous avez besoin (j'en ai deux)

Installer les dépendances :

sudo apt-get install flex apache2-threaded-dev libxml2-dev apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common

Installer PHP 5.3 pour la première fois. Télécharger les sources de php

md5sum Downloads/php-5.3.10.tar.bz2
mkdir ~/Sources
cd ~Sources/
cp -Rf ../Downloads/php-5.3.10.tar.bz2 .
tar xjf php-5.3.10.tar.bz2
cd php-5.3.10/
sudo mkdir /usr/local/php/php_5.3.10

Installez PHP5.6 pour la première fois. Télécharger les sources de php

md5sum Downloads/php-5.6.11.tar.bz2
mkdir ~/Sources
cd ~Sources/
cp -Rf ../Downloads/php-5.6.11.tar.bz2 .
tar xjf php-5.6.11.tar.bz2
cd php-5.6.11/
sudo mkdir /usr/local/php/php-5.6.11

script gestionnaire de versions PHP : Créez un fichier appelé php.sh et le mettre dans /bin/ :

#!/bin/bash
opcion=0
cat << CABECERAMENU
Opciones del menu
1 => PHP 5.3.10
2 => PHP 5.6.11
CABECERAMENU
echo -n "Ingrese su eleccion: "
read opcion
echo
case $opcion in
    "1")
        rm /etc/apache2/php.conf
        ln -s /usr/local/php/php_5.3.10.conf /etc/apache2/php.conf
        /etc/init.d/apache2 restart
    ;;
    "2")
        rm /etc/apache2/php.conf
        ln -s /usr/local/php/php_5.6.11.conf /etc/apache2/php.conf
        /etc/init.d/apache2 restart
    ;;
    *)
        echo "Opcion no valida"
    ;;
esac

Compilez et installez php 5.3 :

cd ~/Sources/php-5.3.10/
sudo ./configure --prefix=/usr/local/php/php_5.3.10 --with-config-file-path=/usr/local/php/php_5.3.10/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --with-freetype-dir=/usr/lib/x86_64-linux-gnu  --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap
sudo make clean
sudo make
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/lib/apache2/modules/libphp5.*
sudo make install
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/local/php/php-5.3.10/modules/libphp5.so
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.3.10/modules/
ls -lhart /usr/local/php/php_5.3.10/modules/
sudo a2dismod php5
sudo service apache2 restart

Compiler et installer php 5.6

cd ~/Sources/php-5.6.11
sudo ./configure --prefix=/usr/local/php/php_5.6.11 --with-config-file-path=/usr/local/php/php_5.6.11/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --enable-calendar --enable-sockets --with-freetype-dir=/usr/lib/x86_64-linux-gnu  --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql  --with-pdo-pgsql --enable-soap
sudo make clean
sudo make
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/lib/apache2/modules/libphp5.*
sudo make install
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/local/php/php_5.6.11/modules/libphp5.so
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.6.11/modules
ls -lhart /usr/local/php/php_5.6.11/modules
sudo a2dismod php5
sudo service apache2 restart

Il faut les utiliser :

$ sudo php.sh
Opciones del menu
1 => PHP 5.3.10
2 => PHP 5.6.11
Ingrese su eleccion: 1

 * Restarting web server apache2                                                                                                                                                                                                                                        apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X