J'ai deux projets sur le serveur local, l'un exécute PHP5.6 et l'autre, PHP7.0. Serait-il possible d'activer ces deux versions en fonction des projets? J'ai déjà essayé d'ajouter AddHandler application/x-httpd-php7 .php
dans l'un des projets htaccess mais cela ne fonctionne pas. Actuellement, PHP7.0 et PHP5.6-fpm sont déjà installés sur le serveur. Ci-dessous, la capture d'écran du phpinfo.
Donc, après avoir cherché sur Google pendant toute la journée. J'ai réussi à exécuter mes deux projets dans FastCgi sur différentes versions de PHP. Merci aux gars de ce forum . J'ai tout désinstallé, y compris Apache et recommencer. Voici les étapes que j'ai utilisées pour activer deux versions de PHP sur mon serveur local. En fait, mon ordinateur fonctionne sous Linux Mint 18.
Sudo apt-get install php5.6-fpm
Sudo apt-get install php7.0-fpm
Sudo nano/usr/lib/cgi-bin/php56-fcgi
Sudo nano/usr/lib/cgi-bin/php70-fcgi
Ouvrez le fichier de configuration php56 "/etc/Apache2/conf-available/php5.6-fpm.conf" et ajoutez cette configuration et enregistrez-la.
<IfModule mod_fastcgi.c>
AddHandler php56-fcgi .php
Action php56-fcgi /php56-fcgi
Alias /php56-fcgi /usr/lib/cgi-bin/php56-fcgi -socket /var/run/php/php5.6-fpm.sock -pass-header Authorization
Action php70-fcgi /php70-fcgi
Alias /php70-fcgi /usr/lib/cgi-bin/php70-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization
</IfModule>
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
Activez maintenant la nouvelle configuration Apache.
Sudo a2enconf php5.6-fpm
Sudo a2dismod php5.6 php7.0
Sudo systemctl redémarrer Apache2
AddHandler php70-fcgi .php
PS: assurez-vous d’activer htaccess dans votre Apache2.conf ou httpd.conf
Tout d'abord, assurez-vous que toute la configuration liée à PHP est désactivée en exécutant les commandes suivantes:
# ls -la/etc/Apache2/conf-enabled | grep php
# ls -la/etc/Apache2/mods-enabled | grep php
Configurez une version différente de PHP-FPM pour un site spécifique:
Ajoutez la ligne suivante dans votre fichier VirtualHost existant.
Include "conf-available/php7.2-fpm.conf"
Par exemple,
# vim /etc/Apache2/sites-enabled/symfony.local.conf
<VirtualHost *:80>
ServerName symfony.local
Include "conf-available/php7.2-fpm.conf"
ServerAdmin webmaster@localhost
DocumentRoot /var/www/symfony.local/curr/public
<Directory /var/www/symfony.local/curr/web>
AllowOverride All
</Directory>
</VirtualHost>
Cela ne fonctionne pas pour debian 9 Stretch. Il m'a fallu un certain temps pour savoir quoi faire, mais à la fin j'ai trouvé une solution qui semble encore plus simple:
Sudo apt-get install php5.6-fpm
Sudo apt-get install php7.0-fpm
Sudo a2enconf php5.6-fpm
Si vous avez installé php5.6 et php5.7, assurez-vous de désactiver ces deux et redémarrez Apache.
Sudo a2dismod php5.6 php7.0
Sudo systemctl restart Apache2
À ce stade, tous vos sites doivent fonctionner sur php 5.6.
Pour les sites qui ont besoin de PHP 7, ajoutez cette ligne dans le vhost:
ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php/php7.0-fpm.sock|fcgi://localhost/path/to/my/main/file"
Ça devrait faire l'affaire :)
J'ai essayé d'implémenter la solution Makubex et cela a fonctionné. Il n’ya qu’un problème que j’ai eu avec une lampe LAMP nouvellement installée, à savoir le fait que fastcgi n’était pas activé .
Sudo apt-get install libapache2-mod-fastcgi php5.6-fpm php5.6 php5.6-dev php5.6-mcrypt php5.6-mbstring php5.6-mysql php5.6-Zip php5.6-Gd php5.6-xml php7.1-fpm libapache2-mod-fastcgi php7.1-fpm php7.1 php7.1-dev php7.1-mbstring php7.1-mysql php7.1-Zip php7.1-Gd php7.1-xml php7.1-curl php7.1-intl php7.1-json php7.1-mcrypt
Et alors:
a2enmod actions
a2enmod fastcgi
Après cela, la solution fonctionnait parfaitement . J'ai obtenu les deux précédents de Exécuter plusieurs versions PHP sur le même serveur à l'aide de php-fpm et xdebug sur Ubuntu 16.04
Cela peut être fait en désactivant et en activant la nouvelle version de PHP.
- passer à l'ancienne version -
a2dismod php7.0
service Apache2 redémarrer- passer à la nouvelle version
a2enmod php7.0
service Apache2 redémarrer
Après avoir essayé de suivre vos instructions, j’ai trouvé un moyen probablement plus facile d’obtenir le même résultat.
En ajoutant la ligne suivante
ProxyPassMatch "^/php70project/.*\.php(/.*)?$" "fcgi://localhost:9070/var/www/" enablereuse=on
dans la configuration Apache vhost, vous pouvez changer la version de PHP dans le répertoire php70project de votre racine/hôte/var/www en la version 7 exécutée en tant que fastcgi.
L'approche suivante pour une utilisation avec unix socket
ProxyPassMatch "^/php70project/.*\.php(/.*)?$" "unix:/var/run/php70fpm.sock|fcgi://localhost/var/www"
ne fonctionne pas comme prévu . Malheureusement, je n'ai pas trouvé le code correct pour que cela fonctionne, mais il n'y a pas d'exemple d'utilisation de socket Unix avec sous-dossier sur cette page https://httpd.Apache.org/docs/2.4 /mod/mod_proxy_fcgi.html cela pourrait ne pas être possible.