在同一台服务器上运行两个PHP版本

Mak*_*bex 23 php apache

我在本地服务器上有两个项目,一个项目运行PHP5.6,另一个项目运行PHP7.0.现在可以根据项目启用这两个版本吗?我已经尝试添加AddHandler application/x-httpd-php7 .php其中一个项目htaccess但它不起作用.目前,PHP7.0和PHP5.6-fpm已经安装在服务器上.以下是phpinfo的屏幕截图.

在此输入图像描述

Mak*_*bex 30

所以在谷歌上搜索了一整天.我设法在不同的PHP版本上运行FastCgi中的两个项目.感谢这个论坛的人.我卸载了包括apache在内的所有内容,然后重新开始.以下是我在本地服务器上启用两个版本的PHP的步骤.顺便说一下,我的电脑在Linux Mint 18上运行.

  1. 假设您已经安装了Apache,为这两个项目创建了虚拟主机并添加了必要的php PPA.让我们调用项目site56.local for php5.6和site70.local for 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. 打开php56 conf文件"/etc/apache2/conf-available/php5.6-fpm.conf"并添加此配置并保存.

    site56.local

  2. 现在启用新的apache配置.

sudo a2enconf php5.6-fpm

  1. 如果你安装了php5.6和php5.7,请确保禁用这两个并重新启动apache.

sudo a2dismod php5.6 php7.0

sudo systemctl重启apache2

  1. 在应该在php7.0上运行的项目上创建一个.htacces文件并添加此处理程序.

AddHandler php70-fcgi .php

  1. 现在在两个项目上创建一个phpinfo文件,如果你看到这样的话,那么恭喜你!

PS:确保在apache2.conf或httpd.conf中启用htaccess

site56.local/phpinfo.php的 在此输入图像描述

site70.local/phpinfo.php的 在此输入图像描述

  • 我不知道您是否甚至一步一步地正确尝试了您的解决方案,因为在启用 php5.6-fpm conf 后重新启动 Apache 时出现此错误`Alias 需要 1-2 个参数,一个假名和一个实名,或某个位置的真实姓名` (2认同)

Jun*_*Xie 8

首先,通过运行以下命令确保禁用所有与PHP相关的configraution:

#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"
Run Code Online (Sandbox Code Playgroud)

例如,

#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>
Run Code Online (Sandbox Code Playgroud)