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

2022-08-30 12:42:35

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

enter image description here


答案 1

因此,在Google上搜索了一整天之后。我设法在不同的PHP版本上运行FastCgi中的两个项目。感谢这个论坛的家伙。

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

  1. 假设您已经安装了Apache,为两个项目创建了虚拟主机并添加了必要的PHP PPA。让我们调用 PHP 5.6 和 PHP 7.0 的项目。安装并通过运行:site56.localsite70.localphp5.6-fpmphp7.0-fpm

     sudo apt-get install php5.6-fpm
     sudo apt-get install php7.0-fpm
    
  2. 在下面创建两个文件(老实说,我不知道此步骤是否仍然必要),然后保存:/usr/lib/cgi-bin/

     sudo nano /usr/lib/cgi-bin/php56-fcgi
     sudo nano /usr/lib/cgi-bin/php70-fcgi
    
  3. 打开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>
    
  4. 现在启用新的 Apache 配置:

     sudo a2enconf php5.6-fpm
    
  5. 如果您安装了 php5.6 和 php5.7,请确保禁用这两个并重新启动 Apache:

     sudo a2dismod php5.6 php7.0
     sudo systemctl restart apache2
    
  6. 在应该在 php7.0 上运行的项目上创建一个文件,并添加以下处理程序:.htacces

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

PS:确保启用您的或.htaccessapache2.confhttpd.conf

site56.local/phpinfo.php:

site70.local/phpinfo.php:


答案 2

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

# ls -la /etc/apache2/conf-enabled |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 webmaster@localhost
    DocumentRoot /var/www/symfony.local/curr/public

    <Directory /var/www/symfony.local/curr/web>
        AllowOverride All
    </Directory>
</VirtualHost>

推荐