У меня есть два проекта на локальном сервере, один проект работает на PHP5.6, а другой — на PHP7.0. Теперь можно ли будет включить эти две версии на основе проектов? Я уже пробовал добавлять AddHandler application/x-httpd-php7 .php
в одном из проектов htaccess, но не работает. В настоящее время на сервере уже установлены PHP7.0 и PHP5.6-fpm. Ниже скриншот phpinfo.
Так что после поиска в гугле на весь день. Мне удалось запустить два моих проекта в FastCgi на разных версиях PHP. Спасибо ребятам из этого Форум. Я удалил все, включая Apache и начать все заново. Ниже приведены шаги, которые я использовал для включения двух версий PHP на моем локальном сервере. Кстати, мой компьютер работает на Linux Mint 18.
sudo apt-get установить php5.6-fpm
sudo apt-get установить php7.0-fpm
sudo nano / usr / lib / cgi-bin / php56-fcgi
sudo nano / usr / lib / cgi-bin / php70-fcgi
Откройте файл php56 conf «/etc/apache2/conf-available/php5.6-fpm.conf», добавьте этот конфиг и сохраните.
<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>
Теперь включите новую конфигурацию apache.
sudo a2enconf php5.6-fpm
sudo a2dismod php5.6 php7.0
sudo systemctl перезапустить apache2
AddHandler php70-fcgi .php
PS: убедитесь, что вы включили htaccess в вашем apache2.conf или httpd.conf
Прежде всего, убедитесь, что все связанные с PHP настройки отключены, выполнив следующие команды:
# ls -la / etc / apache2 / conf-enabled | grep php
# ls -la / etc / apache2 / mods-enabled | grep php
Настройте другую версию PHP-FPM для конкретного сайта:
Добавьте следующую строку в существующий файл VirtualHost.
Include "conf-available/php7.2-fpm.conf"
Например,
# 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>
Это не работает для Debian 9 Stretch. Мне понадобилось время, чтобы понять, что делать, но в конце концов я нашел решение, которое кажется еще проще:
sudo apt-get install php5.6-fpm
sudo apt-get install php7.0-fpm
sudo a2enconf php5.6-fpm
Если вы установили php5.6 и php5.7, убедитесь, что вы отключили эти два и перезапустите apache.
sudo a2dismod php5.6 php7.0
sudo systemctl restart apache2
На данный момент все ваши сайты должны работать на PHP 5.6.
Для сайтов, которым нужен php 7, добавьте эту строку в vhost:
ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php/php7.0-fpm.sock|fcgi://localhost/path/to/my/main/file"
Это должно сделать свое дело 🙂
Я попытался реализовать решение Makubex, и оно сработало. У меня была только одна проблема с недавно установленной LAMP, и это было то, что fastcgi не был включен.
Я просто снова установил php с помощью следующего скрипта и впоследствии включил fastcgi.
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
А потом:
a2enmod actions
a2enmod fastcgi
После этого решение сработало отлично.
Я получил два выше от Запустите несколько версий PHP на одном сервере, используя php-fpm и xdebug в Ubuntu 16.04
После попытки следовать вашим указаниям я нашел, возможно, более легкий путь для того же результата.
Добавив следующую строку
ProxyPassMatch "^/php70project/.*\.php(/.*)?$" "fcgi://localhost:9070/var/www/" enablereuse=on
в конфигурации Apache vhost вы можете изменить версию php внутри каталога php70project в вашем корневом каталоге vhost / var / www на версию 7, работающую от имени fastcgi.
Следующий подход для использования с сокетом Unix
ProxyPassMatch "^/php70project/.*\.php(/.*)?$" "unix:/var/run/php70fpm.sock|fcgi://localhost/var/www"
не работает, как задумано.
К сожалению, я не смог найти правильный код, чтобы это работало, но на этой странице нет примера использования сокетов Unix с подпапками. https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html это может быть просто невозможно.
Это можно сделать, отключив и включив новую версию PHP-
- переключиться на старую версию —
a2dismod php7.0
перезапуск службы apache2- перейти на более новую версию
a2enmod php7.0
перезапуск службы apache2