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

新手上路,请多包涵

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

在此处输入图像描述

原文由 Makubex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

所以,在谷歌上搜索了一整天之后。我设法在不同 PHP 版本的 FastCgi 中运行我的两个项目。感谢这个 论坛 的人。

我卸载了包括 Apache 在内的所有内容并重新开始。以下是我用来在本地服务器上启用两个版本的 PHP 的步骤。顺便说一句,我的电脑在 Linux Mint 18 上运行。

  1. 假设您已经安装了 Apache,为这两个项目创建了虚拟主机并添加了必要的 PHP PPA。我们将项目称为 site56.local 用于 PHP 5.6 和 site70.local 用于 PHP 7.0。安装 php5.6-fpmphp7.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 ,添加此配置并保存:
     <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>

  1. 现在启用新的 Apache 配置:
     sudo a2enconf php5.6-fpm

  1. 如果您安装了 php5.6 和 php5.7,请确保禁用这两个并重新启动 Apache:
     sudo a2dismod php5.6 php7.0
    sudo systemctl restart apache2

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

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

PS:确保在您的 apache2.confhttpd.conf 中启用 .htaccess

site56.local/phpinfo.php

site70.local/phpinfo.php :

原文由 Makubex 发布,翻译遵循 CC BY-SA 4.0 许可协议

由于所有 linux 软件包的东西都混淆了这个过程,这使得这变得更加困难。简单的手动、独立于系统的方式:

从源代码构建您的 2 个版本的 PHP。你会在你的模块目录中说 libphp7.so 和 libphp5.so。只需为每个运行一个单独的 httpd.conf 文件。我跑了 5 和 7 多年:

 httpd-php7.conf
httpd-php5.conf

然后。只需将无法运行的虚拟主机 7 放入 php5 配置中,然后在启动时手动启动它们或创建 rc.d 文件或系统用于启动的任何内容。

原文由 Danial 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题