在同一台服务器上运行两个PHP版本
我在本地服务器上有两个项目,一个项目运行PHP5.6,另一个运行PHP7.0。现在可以根据项目启用这两个版本吗?我已经尝试在其中一个项目htaccess中添加AddHandler application/x-httpd-php7 .php
,但它不起作用。目前,服务器上已经安装了PHP7.0和PHP5.6-fpm。以下是phpinfo的截图。在同一台服务器上运行两个PHP版本
打完了整整一天在谷歌搜索。我设法在不同的php版本中运行FastCgi中的两个项目。感谢这个forum的家伙。我卸载了包括apache在内的所有东西,然后重新开始。以下是我用于在本地服务器上启用两个版本的PHP的步骤。顺便说一句,我的电脑上的Linux Mint的18
- 运行假设你已经安装了Apache,创造了这两个项目的虚拟主机,并添加了必要的PHP的PPA。让我们调用项目site56.local为php5.6和site70.local为php7.0。通过运行安装php5.6-fpm和php7.0-fpm。
须藤易于得到安装php5.6-FPM
须藤易于得到安装php7.0-FPM
- 创建两个文件在/ usr/lib/cgi-bin /下(老实说我不知道这一步是否仍然有必要),然后保存。
-
打开php56 conf文件”/etc/apache2/conf-available/php5.6-fpm.conf“并添加此配置并保存。
现在启用新的Apache配置。
须藤纳米/ usr/lib中/的cgi-bin/php56-FCGI
须藤纳米/ usr/lib中/的cgi-bin/php70-FCGI
开始=>须藤a2enconf php5.6-FPM
如果你想用PHP 5.5.9而不是PHP 5.6,那么你需要安装php5 -fpm 另外,php5-fpm的内容。 conf文件应该在此链接中:https://pastebin.com/3UgdxNV7 –
在尝试按照你的指示之后,我找到了一个可能更简单的方法来获得相同的结果。
通过添加以下行
ProxyPassMatch "^/php70project/.*\.php(/.*)?$" "fcgi://localhost:9070/var/www/" enablereuse=on
在Apache虚拟主机配置
,你可以在你的虚拟主机的根在/ var/WWW目录更改php70project里面的PHP版本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。我花了一段时间来firgure出来做什么,但最后我发现这似乎更容易的解决方案:
sudo apt-get install php5.6-fpm
sudo apt-get install php7.0-fpm
sudo a2enconf php5.6-fpm
如果安装php5.6和php5.7,请确保您禁用此两重启阿帕奇。
sudo a2dismod php5.6 php7.0
sudo systemctl restart apache2
在这一点上,所有的网站必须在PHP 5.6上工作。
对于谁需要PHP 7点,在虚拟主机中加入这一行:
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 multiple PHP version on the same server using php-fpm and xdebug on Ubuntu 16.04
首先拿到了两个以上,确保所有的PHP相关configraution是禁用的运行以下命令:
#LS -la的/ etc/apache2的/启用的conf-| grep php
#ls -la/etc/apache2/mods-enabled | grep的PHP
设置不同版本的PHP-FPM的特定部位:
添加下面一行在现有的虚拟主机文件。
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 [email protected]
DocumentRoot /var/www/symfony.local/curr/public
<Directory /var/www/symfony.local/curr/web>
AllowOverride All
</Directory>
</VirtualHost>
什么是你'MOD-enabled'的输出Apache目录?你确定你已经启用了php5.x和php7.0x吗? – hassan
http://askubuntu.com/questions/50344/how-to-have-two-version-of-php-installed-and-switch-easily This –
嗨@HassanAhmed,只有php7.0和php5.6-fpm已启用。当我启用php5.6 Apache崩溃。也许它弄糊涂得到什么版本。 – Makubex