📅  最后修改于: 2023-12-03 15:38:39.230000             🧑  作者: Mango
在实际的 Web 开发中,我们可能需要在同一个 Apache 服务器上运行多个项目,而这些项目使用的 PHP 版本可能不同,该怎么办呢?本文将介绍如何在同一个 Apache 服务器上为两个项目运行两个 PHP 版本。
在进行本文示例时,需要满足以下前提条件:
使用以下命令启用 mod_rewrite 模块:
sudo a2enmod rewrite
sudo service apache2 restart
在 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
在 Apache 的根目录下创建两个不同版本的 PHP 项目目录,例如:
/var/www/project1
/var/www/project2
在 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>
使用以下命令重启 Apache:
sudo service apache2 restart
现在,在同一个 Apache Web 服务器上,我们已经成功地为两个不同的项目,使用了两个不同版本的 PHP。您可以使用以上示例中提供的方法,在自己的服务器环境中部署多个 PHP 项目。