У меня есть два проекта на локальном сервере, в одном проекте работает 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.
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
Откройте файл conf php56 «/etc/apache2/conf-available/php5.6-fpm.conf» и добавьте эту конфигурацию и сохраните.
Теперь включите новую конфигурацию apache.
sudo a2enconf php5.6-fpm
sudo a2dismod php5.6 php7.0
sudo systemctl restart apache2
AddHandler php70-fcgi .php
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