dans ubuntu il y a apache.conf dans / etc / apache2, j’y ai pensé aussi, peut-être qu’à l’avenir je ferais un paquet qui serait très utile pour les développeurs web
Vous pouvez le faire avec suPHP, pas sûr des détails
Marco Ceppi
1
y at-il quelque chose comme python virtualenv pour avoir des déploiements propres isolés de PHP?
Lenzai
Avez-vous envisagé de configurer des serveurs virtuels Ubuntu à l’aide d’un logiciel de virtualisation que vous utilisiez sans tête? Je serais surpris si ce que vous voulez faire n'est pas bien servi (sans jeu de mots) par une telle configuration.
Simon Hoare
1
Définissez ce que signifie "passer facilement". J'ai utilisé cela pour le travail: mon serveur Web utilisait PHP différent pour .phpet les .php5fichiers. Vous pouvez également configurer votre serveur WWW pour qu’il utilise différentes versions de PHP pour différents ports (comme http://localhost:80et http://localhost:8080) ou différents domaines (comme http://localphp52et http://localphp53), en conservant intactes la structure restante des dossiers. Vous pouvez ainsi facilement comparer l’exécution d’une application Web dans deux environnements en modifiant la configuration actuelle. URL
cprn
Réponses:
61
Vous pouvez utiliser un gestionnaire de version php pour y parvenir. Différents gestionnaires de versions sont disponibles comme:
Merci, pouvez-vous s'il vous plaît inclure des instructions? (Onnu vishadheekarikkamo?)
Tachyons
17
Bien que cela puisse théoriquement répondre à la question, il serait préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence.
Nanne
2
Il suffit de vérifier les liens qu'ils ont vraiment une bonne documentation sur leurs sites. Voulez-vous vraiment que je copie-colle des éléments de leur site Web?.
aneeshep
7
Ironiquement, une des raisons pour ne pas simplement poster des liens est linkrot, dont ce post souffre maintenant.
MirroredFate
@aneeshep, ne copiez pas leur documentation, mais des extraits pertinents et quelques lignes sur ce qu'est un "gestionnaire de versions php" et sur la façon de l'utiliser / de le configurer pour ce problème spécifique serait vraiment la bienvenue.
Matthieu
20
Vous pouvez exécuter 2 versions différentes de PHP à la fois, mais ce n'est pas aussi simple que de les obtenir facilement. Vous devez exécuter une version installée séparément et la servir conformément aux paramètres de votre configuration apache.
Vous pouvez le faire en utilisant fastcgi par exemple: ce que vous recherchez, en gros, est la configuration que vous voyez sur cette page . Vous ajoutez un gestionnaire différent dans votre configuration en fonction de la situation / port / domaine dont vous avez besoin. Le truc, après avoir installé les deux versions, est la suivante:
=== de cette page ==
La dernière étape consistait à créer des hôtes virtuels. En fin de compte, j'ai trois fichiers dans / etc / apache2 / sites-enabled: 000-default, php5.3.17 et php5.4.7 avec le contenu suivant
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 bons tutoriels (mais moins compressés). Ceci et cela
(Ne vous fiez pas au fait que la question liée est une grande question sans réponse acceptée. La méthode devrait (et ne fonctionne pas) bien, mais l'utilisateur a oublié d'utiliser <?phpet d'utiliser les <?marques courtes, voir les commentaires.)
J'ai installé php 5.6 et 7.0 mais, en plus de toutes les astuces, il continuait à fonctionner à 5.6, cette commande enregistre le jour (dans mon cas, je sélectionne l'option 1 et relance apache):
Identique au script de "Growling Flea", mais utilisant de nouvelles versions.
Ajouter le PPA
Les packages PHP 5.6 et PHP 7.0 proviennent d'un PPA tiers, non fourni par les référentiels officiels Ubuntu de Canonical. Les PPA que je recommande ici proviennent d'Ondřej Surý, qui empaquette PHP pour Debian (qui est ensuite utilisé par Ubuntu). Ainsi, ce n'est pas un référentiel officiel, mais il n'est pas vraiment aléatoire! Le PPA lui-même est
ici
Pour ajouter le PPA à votre configuration:
sudo add-apt-repository ppa:ondrej/php
Ensuite, nous voudrons également récupérer des informations sur les offres de ce nouveau PPA, alors exécutez:
sudo apt-get update
Installer de nouvelles versions de PHP
Certains paquets php5 ont déjà été installés, mais je n’ai rien désinstallé, j’ai simplement laissé apt à préciser ce qu’il voulait faire quand je lui ai demandé d’installer les nouvelles versions:
sudo apt-get install php5.6 php7.0
Cela a entraîné beaucoup de plaintes d'apt et de nombreux conflits. La première solution suggérée consistait à supprimer tous les packages php5 de base afin que PHP 5.6 puisse être installé - alors je viens d'accepter la première suggestion.
J'utilise apache, donc cette configuration m'a fourni apache avec les modules php5.6 et php7.0 disponibles, et le module php5.6 effectivement chargé.
En plus du PHP lui-même, toutes les extensions et autres outils que vous attendez de PHP sont présents pour les deux versions de PHP. Il est donc très facile d'ajouter les modules dont vous avez besoin. J'ai été très très impressionné par la qualité de son travail.
Configuration et changement de version
Maintenant, vous avez installé deux versions de PHP complètement distinctes sur votre système, regardons donc où toutes les pièces sont parties!
Les fichiers de configuration sont tous dans /etc/php/5.6et /etc/php/7.0
respectivement. Ici, vous pouvez configurer quelles extensions sont chargées, définir les paramètres ini et tout le reste pour chaque version de manière isolée.
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:
sudo a2dismod php5.6
sudo a2enmod php7.0
sudo service apache2 restart
Pour les utilisateurs de nginx, les changements sont presque aussi simples. Digital Ocean dispose d’une bonne documentation (ils ont une excellente documentation!). Consultez 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 des commandes php5.6 et php7.0 disponibles. J'ai aussi toujours une commande php - regardez dans / etc / alternatives pour voir si c'est un lien symbolique vers une version particulière de PHP cli *. Vous pouvez également vérifier rapidement lequel vous utilisez en exécutant php -v.
* Plus spécifiquement, lancez php pour voir quelle version de PHP est utilisée - mais cela va probablement pointer vers /usr/bin/php, ce qui pour moi est un lien symbolique vers la /etc/alternatives/phpcommande.
Travailler avec des extensions
Ce PPA est livré avec le paquet php-pear habituel qui propose la commande pecl pour les deux versions de PHP, de sorte que toutes les extensions disponibles via PECL peuvent être installées de la manière habituelle. Vous aurez également besoin des en-têtes appropriés pour que php5.6-dev ou php7.0-dev soit installé.
Quand l'installation de pecl est terminée, vous recevrez une note pour ajouter le fichier * .so à votre php.ini; En fait, la meilleure chose à faire ici est de regarder ce qui se passe /etc/php/mods-available. Il y aura déjà quelques modules ici, chacun dans son propre fichier nommé d'après l'extension et se terminant par .ini. Vous pouvez en copier un à utiliser comme modèle ou créer le vôtre et y insérer toute la configuration appropriée pour l'extension (au minimum, vous en aurez besoin extension=[extensionName].so).
Une fois que la nouvelle extension est dans les mods disponibles, activez-la puis vérifiez-la en faisant:
sudo phpenmod extension
php -m
Cela créera les liens symboliques aux bons endroits pour que votre version actuelle de PHP charge ce module, et vous devriez le voir dans la liste des modules générés par le php -m. Astuce de pro: si vous ne le voyez pas dans la sortie, faites défiler l'écran jusqu'en haut pour voir s'il y a des messages d'erreur utiles.
Installez PHP 5.3 pour la première fois. Télécharger les sources 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 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
Versions du gestionnaire de script PHP: Créez un fichier appelé php.shet insérez-le dans /bin/:
#!/bin/bash
opcion=0
cat << CABECERAMENU
Opciones del menu
1=> PHP 5.3.102=> 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
Compiler et installer 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
Utilisons-les:
$ 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
Une seule instance Apache ne peut pas exécuter simultanément deux versions de PHP différentes (du moins autant que je sache).
Deux versions différentes de PHP ne peuvent pas être installées à partir de packages, car elles entreraient en conflit (et tentent d'écraser les mêmes répertoires).
Solution:
for b) Compilez «l'autre» version PHP à partir de la source manuellement (ou, si vous préférez, récupérez la source du paquet approprié et modifiez-le pour éviter les conflits et modifier les chemins d'installation).
pour a) Créez un ensemble séparé de configs pour apache avec différents chemins de modules et un script de démarrage séparé. Et bien sûr, exécutez-le sur un port séparé.
il n'y a pas de script pré-emballé pour compiler ces multiples instances parallele php? Juste pour le faire manuellement et corriger les chemins? Cela signifie donc que toutes les sociétés d’hébergement développent des scripts personnalisés pour exécuter ces versions parallèles et ne partagent jamais leurs efforts.
Lenzai
4
Une seule instance apache peut exécuter 2 versions php à la fois.
Nanne
1
Au lieu d’en faire plusieurs, VirtualHostj’ajoute simplement le code ci-dessous dans mon .htaccessfichier et, étonnamment, cela a fonctionné,
Si vous voulez les exécuter en même temps, vous avez besoin de deux ports différents. Peut-être que vous pouvez simplement changer votre configuration d’apache (httpd.conf) avec un simple script qui déplace l’une ou l’autre version à la bonne position avant de démarrer apache.
J'ai déjà installé PHP 5.3.5. Comment puis-je installer PHP 5.2.17? Pourriez-vous s'il vous plaît me dire où et ce que je dois changer pour basculer entre ces deux versions? Le fichier httpd.conf est vide dans mon installation.
Debiprasad
0
Vous pouvez également exécuter chaque site Web avec différents utilisateurs. Plus sécurisé.
Bienvenue sur Ask Ubuntu! Bien que cela puisse théoriquement répondre à la question, il serait préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence.
user98085
Je n'ai pas eu le temps de faire ce que vous avez dit. Je suppose que je voulais seulement montrer un chemin. Stil doit apprendre à utiliser les outils de formatage. Merci quand même!
Henrique Fernandes
0
J'ai écrit un script bash qui me permet de basculer facilement entre les versions php installées sur ma boîte. J'exécute plusieurs hôtes virtuels car j'ai plusieurs projets Web avec des clients qui ont d'anciens et de nouveaux programmes. Certains de ces projets nécessitent des versions plus anciennes de php et d'autres projets requièrent php7.0.
Lisez mes commentaires et assurez-vous de bien comprendre ce qui se passe avant de l'utiliser.
#!/bin/bash# This file is for switching php versions. # To run this file you must use bash, not sh# # OS: Ubuntu 14.04 but should work on any linux# Example: bash phpswitch.sh 7.0# Written by Daniel Pflieger# growlingflea at g mail dot com
NEWVERSION=$1 #this is the git directory target#get the active php enabled mod by getting the array of files and store#it to a variable
VAR=$(ls /etc/apache2/mods-enabled/php*)#parse the returned variables and get the version of php that is active.
IFS=' ' read -r -a array <<<"$VAR"
array[0]=${array[0]#*php}
array[0]=${array[0]%.conf}#confirm that the newversion veriable isn't empty.. if it is tell user #current version and exitif["$NEWVERSION"=""];then
echo current version is ${array[0]}.To change version please use argument
exit 1fi
OLDVERSION=${array[0]}#confirm to the user this is what they want to do
echo "Update php" ${OLDVERSION} to ${NEWVERSION}#give the user the opportunity to use CTRL-C to exit ot just hit return
read x
#call a2dismod function: this deactivate the current php version
sudo a2dismod php${OLDVERSION}#call the a2enmod version. This enables the new mode
sudo a2enmod php${NEWVERSION}
echo "Restart service??"
read x
#restart apache
sudo service apache2 restart
J'ai eu le même problème quand je manipulais plusieurs projets. Je me suis référé à cet article.
C’est comme chaque fois que j’ai besoin de changer de version si besoin est, mais cela donne la flexibilité nécessaire pour cli et web séparément.
Passer de PHP5.6 à PHP7.0
Pour Apache, nous pouvons utiliser la commande en tant que:
Bien que ce lien puisse répondre à la question, il est préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien pour référence. Les réponses avec lien uniquement peuvent devenir non valides si la page liée est modifiée. - De l'avis
waltinator
@waltinator Merci pour l'examen, bien sûr, prendra soin de cela
Shivdhwaj Pandey
0
Cela peut être fait en désactivant et en activant la nouvelle version de PHP.
passer à l'ancienne version -
a2dismod php7.0
service apache2 restart
passer à la nouvelle version
a2enmod php7.0
service apache2 restart
.php
et les.php5
fichiers. Vous pouvez également configurer votre serveur WWW pour qu’il utilise différentes versions de PHP pour différents ports (commehttp://localhost:80
ethttp://localhost:8080
) ou différents domaines (commehttp://localphp52
ethttp://localphp53
), en conservant intactes la structure restante des dossiers. Vous pouvez ainsi facilement comparer l’exécution d’une application Web dans deux environnements en modifiant la configuration actuelle. URLRéponses:
Vous pouvez utiliser un gestionnaire de version php pour y parvenir. Différents gestionnaires de versions sont disponibles comme:
Mon préféré est phpbrew. J'espère que cela t'aides.
la source
Vous pouvez exécuter 2 versions différentes de PHP à la fois, mais ce n'est pas aussi simple que de les obtenir facilement. Vous devez exécuter une version installée séparément et la servir conformément aux paramètres de votre configuration apache.
Vous pouvez le faire en utilisant fastcgi par exemple: ce que vous recherchez, en gros, est la configuration que vous voyez sur cette page . Vous ajoutez un gestionnaire différent dans votre configuration en fonction de la situation / port / domaine dont vous avez besoin. Le truc, après avoir installé les deux versions, est la suivante:
=== de cette page ==
défaut:
php5.3.17:
php5.4.7:
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 bons tutoriels (mais moins compressés). Ceci et cela
(Ne vous fiez pas au fait que la question liée est une grande question sans réponse acceptée. La méthode devrait (et ne fonctionne pas) bien, mais l'utilisateur a oublié d'utiliser
<?php
et d'utiliser les<?
marques courtes, voir les commentaires.)la source
J'ai installé php 5.6 et 7.0 mais, en plus de toutes les astuces, il continuait à fonctionner à 5.6, cette commande enregistre le jour (dans mon cas, je sélectionne l'option 1 et relance apache):
la source
phpinfo()
etphp -v
de la vérification car toutes deux peuvent avoir une valeur différente.Celui-ci fonctionne 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.
la source
A partir de ce post , je viens de mettre en ordre les commandes et de les expliquer dans l'ordre car j'ai été servi (Ubuntu 12.04)
Cette méthode vous donne:
script avec menu, qui permet de basculer entre les versions php installées (pas les deux en même temps)
diverses versions de PHP installées sur votre serveur
fichiers de configuration séparés
Installez toutes les versions dont vous avez besoin (j'en ai deux)
Installez des dépendances:
Installez PHP 5.3 pour la première fois. Télécharger les sources php
Installez PHP5.6 pour la première fois. Télécharger les sources php
Versions du gestionnaire de script PHP: Créez un fichier appelé
php.sh
et insérez-le dans/bin/
:Compiler et installer php 5.3:
Compiler et installer php 5.6
Utilisons-les:
la source
Problèmes:
Une seule instance Apache ne peut pas exécuter simultanément deux versions de PHP différentes (du moins autant que je sache).
Deux versions différentes de PHP ne peuvent pas être installées à partir de packages, car elles entreraient en conflit (et tentent d'écraser les mêmes répertoires).
Solution:
for b) Compilez «l'autre» version PHP à partir de la source manuellement (ou, si vous préférez, récupérez la source du paquet approprié et modifiez-le pour éviter les conflits et modifier les chemins d'installation).
pour a) Créez un ensemble séparé de configs pour apache avec différents chemins de modules et un script de démarrage séparé. Et bien sûr, exécutez-le sur un port séparé.
la source
Au lieu d’en faire plusieurs,
VirtualHost
j’ajoute simplement le code ci-dessous dans mon.htaccess
fichier et, étonnamment, cela a fonctionné,Node: J'avais déjà installé
php7.2-fpm
avant d'utiliser le code.la source
Si vous voulez les exécuter en même temps, vous avez besoin de deux ports différents. Peut-être que vous pouvez simplement changer votre configuration d’apache (httpd.conf) avec un simple script qui déplace l’une ou l’autre version à la bonne position avant de démarrer apache.
la source
Vous pouvez également exécuter chaque site Web avec différents utilisateurs. Plus sécurisé.
J'ai utilisé cette approche une fois.
http://blog.servergrove.com/2011/08/22/how-to-setup-multiple-php-versions-on-apache/
Maintenant, je pense qu'il est préférable d'utiliser php-fpm ... mais c'est un peu plus compliqué de configurer plusieurs versions de php.
Il faudra exécuter plusieurs php-fpms et configurer apache pour qu’ils s’utilisent les uns les autres.
la source
J'ai écrit un script bash qui me permet de basculer facilement entre les versions php installées sur ma boîte. J'exécute plusieurs hôtes virtuels car j'ai plusieurs projets Web avec des clients qui ont d'anciens et de nouveaux programmes. Certains de ces projets nécessitent des versions plus anciennes de php et d'autres projets requièrent php7.0.
Lisez mes commentaires et assurez-vous de bien comprendre ce qui se passe avant de l'utiliser.
la source
J'ai eu le même problème quand je manipulais plusieurs projets. Je me suis référé à cet article. C’est comme chaque fois que j’ai besoin de changer de version si besoin est, mais cela donne la flexibilité nécessaire pour cli et web séparément.
Passer de PHP5.6 à PHP7.0
Pour Apache, nous pouvons utiliser la commande en tant que:
Pour la CLI, nous pouvons utiliser la commande en tant que:
Passer de php7.0 à php5.6
Pour Apache, nous pouvons utiliser la commande en tant que:
Pour la CLI, nous pouvons utiliser la commande en tant que:
la source
Cela peut être fait en désactivant et en activant la nouvelle version de PHP.
la source