📜  如何在同一个 apache 服务器上为两个项目运行两个PHP版本?(1)

📅  最后修改于: 2023-12-03 15:38:39.230000             🧑  作者: Mango

如何在同一个 Apache 服务器上为两个项目运行两个 PHP 版本?

在实际的 Web 开发中,我们可能需要在同一个 Apache 服务器上运行多个项目,而这些项目使用的 PHP 版本可能不同,该怎么办呢?本文将介绍如何在同一个 Apache 服务器上为两个项目运行两个 PHP 版本。

前提条件

在进行本文示例时,需要满足以下前提条件:

  1. 已经安装 Apache Web 服务器。
  2. 已经安装 PHP 的两个不同版本;
  3. 已经安装 Apache 的 PHP 模块;
  4. 已经安装 mod_rewrite 模块。
步骤
1. 在 Apache 中启用 mod_rewrite 模块

使用以下命令启用 mod_rewrite 模块:

sudo a2enmod rewrite
sudo service apache2 restart
2. 配置不同 PHP 版本的模块

在 Ubuntu / Debian 中,以下命令可以列出系统中已安装的所有 PHP 版本:

sudo apt list --installed *php*

根据自己需要,安装所需的 PHP 版本,同时安装对应的 Apache 模块。

例如,要在 Ubuntu 20.04 上安装 PHP 7.4 和 PHP 8.0,可以使用以下命令:

sudo apt install php7.4 libapache2-mod-php7.4 php8.0 libapache2-mod-php8.0
3. 创建两个不同版本的 PHP 项目

在 Apache 的根目录下创建两个不同版本的 PHP 项目目录,例如:

/var/www/project1
/var/www/project2
4. 配置 Apache

在 Apache 的配置文件中添加以下设置:

sudo nano /etc/apache2/sites-available/000-default.conf

添加以下代码:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/project1

    <Directory /var/www/project1>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted

        # Configure mod_php7.4
        <FilesMatch \.php$>
            SetHandler application/x-httpd-php7.4
        </FilesMatch>
    </Directory>

    # Configure mod_rewrite
    <Directory /var/www/project1>
        Options Indexes FollowSymLinks
        AllowOverride All

        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php [L,QSA]
    </Directory>

</VirtualHost>


<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/project2

    <Directory /var/www/project2>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted

        # Configure mod_php8.0
        <FilesMatch \.php$>
            SetHandler application/x-httpd-php8.0
        </FilesMatch>
    </Directory>

    # Configure mod_rewrite
    <Directory /var/www/project2>
        Options Indexes FollowSymLinks
        AllowOverride All

        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php [L,QSA]
    </Directory>

</VirtualHost>
5. 重启 Apache

使用以下命令重启 Apache:

sudo service apache2 restart
结论

现在,在同一个 Apache Web 服务器上,我们已经成功地为两个不同的项目,使用了两个不同版本的 PHP。您可以使用以上示例中提供的方法,在自己的服务器环境中部署多个 PHP 项目。