Запуск двух версий PHP на одном сервере

У меня есть два проекта на локальном сервере, в одном проекте работает PHP5.6, а на другом – PHP7.0. Теперь можно было бы включить эти две версии на основе проектов? Я уже пробовал добавить AddHandler application/x-httpd-php7 .php в один из htaccess проекта, но не работал. В настоящее время PHP7.0 и PHP5.6-fpm уже установлены на сервере. Ниже приведен скриншот phpinfo.

введите описание изображения здесь

Поэтому после поиска в google весь день. Мне удалось запустить мои два проекта в FastCgi в разных версиях php. Спасибо ребятам из этого форума . Я удалил все, включая apache, и начал заново. Ниже приведены шаги, которые я использовал для включения двух версий PHP на моем локальном сервере. Кстати, мой компьютер работает на Linux Mint 18.

  1. Предполагая, что вы уже установили Apache, создали виртуальный хост для двух проектов и добавили необходимые PPP-политики. Позволяет называть проекты site56.local для php5.6 и site70.local для php7.0. Установите php5.6-fpm и php7.0-fpm, запустив.

sudo apt-get install php5.6-fpm

sudo apt-get install php7.0-fpm

  1. Создайте два файла в каталоге / usr / lib / cgi-bin / (честно говоря, я не знаю, нужен ли этот шаг) и сохраните.

sudo nano / usr / lib / cgi-bin / php56-fcgi

sudo nano / usr / lib / cgi-bin / php70-fcgi

  1. Откройте файл conf php56 «/etc/apache2/conf-available/php5.6-fpm.conf» и добавьте эту конфигурацию и сохраните.

    введите описание изображения здесь

  2. Теперь включите новую конфигурацию apache.

sudo a2enconf php5.6-fpm

  1. Если вы установили php5.6 и php5.7, убедитесь, что вы отключили эти два и перезапустите apache.

sudo a2dismod php5.6 php7.0

sudo systemctl restart apache2

  1. Создайте файл .htacces в проекте, который должен запускаться на php7.0 и добавить этот обработчик.

AddHandler php70-fcgi .php

  1. Теперь создайте файл phpinfo в двух проектах, и если вы увидите что-то подобное, то поздравляем!

PS: убедитесь, что вы включили htaccess в apache2.conf или httpd.conf

site56.local / phpinfo.php введите описание изображения здесь

site70.local / phpinfo.php введите описание изображения здесь

После попытки следовать вашим указаниям я нашел, возможно, более простой способ для того же результата.

Добавив следующую строку

 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, это может просто не быть возможное.

Он не работает для 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 

После этого решение работало отлично. Я получил два выше из Run несколько PHP версии на том же сервере, используя php-fpm и xdebug на Ubuntu 16.04