移至主內容
首頁  >  部落格目錄  >  如何在Web Server上使用 Apache 安裝多個 PHP 版本

如何在Web Server上使用 Apache 安裝多個 PHP 版本

如何在Web Server上使用 Apache 安裝多個 PHP 版本

Php版本
Written by Shiuan on 30 May 2024

Apache 是一款免費且開源的網頁伺服器軟體,以其穩定性而著稱。

本指南將展示如何配置 Apache 以同時運行多個版本的 PHP,並且能夠輕鬆地在它們之間切換。

要在 Apache 上同時運行多個版本的 PHP,您需要使用 Apache 模組 fcgid。該模組允許您使用 FastCGI 執行腳本,包括 PHP 腳本,並且可以用來為特定虛擬主機指定應該使用的 PHP 版本。

以下是如何配置 Apache 同時使用 PHP 8.x、PHP 7.x 和 PHP 5.6 的範例:


步驟1:安裝 Apache2

首先,我們需要更新系統。

執行以下命令來更新系統。

sudo apt update

要安裝 Apache2,請執行以下命令。

sudo apt install apache2 -y

檢查 Apache 狀態

sudo systemctl status apache2

如果它未啟動,請執行以下命令來啟動 Apache。

sudo systemctl start apache2

現在,打開您的瀏覽器並輸入 IP 以訪問默認網頁:http://<your_ip>。對於本地主機,只需在瀏覽器中輸入 localhost:http://localhost

範例畫面:

2


步驟2:安裝 PHP 8.x、PHP 7.x 和 PHP 5.6

接下來,我們需要添加 PHP 軟體庫,這將允許我們下載和安裝 PHP 版本。

運行以下命令以添加和安裝 PHP 版本。

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y    
sudo apt update -y    
sudo apt install libapache2-mod-fcgid

安裝 PHP 5.6

sudo apt install php5.6 php5.6-fpm php5.6-mysql libapache2-mod-php5.6 -y

安裝 PHP 7.4

sudo apt install php7.4 php7.4-fpm php7.4-mysql libapache2-mod-php7.4 -y

安裝 PHP 8.1

sudo apt install php8.1 php8.1-fpm php8.1-mysql libapache2-mod-php8.1 -y

您可以透過檢查 /var/run/php/ 中的套接字來驗證安裝

ls -la /var/run/php/

範例畫面:

3

一些常用的 PHP 應用程式擴展(選擇性使用),請確保將 8.1 替換為您需要的版本。

sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y


步驟3:啟動 PHP-FPM 服務

PHP-FPM(FastCGI Process Manager)是 FastCGI 的一種實現,它是一種與網頁伺服器交互的協議,旨在處理高負載並減少執行 PHP 腳本的開銷。它通常用於改善 PHP 應用程式的性能,允許它們作為獨立的進程運行,而不是在網頁伺服器進程內運行。

確保 php-fpm 服務正在運行。

啟動 php-fpm 服務(請確保將 8.1 替換為您需要的版本。)

sudo systemctl start php8.1-fpm
sudo systemctl status php8.1-fpm

範例畫面:

3


步驟4:配置 Apache2

我們將使用 a2enmod 啟用一些 Apache 模組。

sudo a2enmod actions fcgid alias proxy_fcgi

重新啟動 Apache。

sudo systemctl restart apache2

現在我們已經準備好使用虛擬主機或 .htaccess 文件來使用不同版本的 PHP。


步驟5:虛擬主機方案

現在,讓我們分別為 demo.com 建立虛擬主機,並測試使用 php5.6、php7.4 和 php8.1。

cd /etc/apache2/sites-available> 
sudo vi demo.com.conf

添加以下配置並儲存文件。

<VirtualHost *:80>
ServerAdmin admin@demo.com
ServerName demo.com
ServerAlias www.demo.com
DocumentRoot /var/www/demo.com
<Directory /var/www/demo.com/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
<FilesMatch \.php>
SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/err-demo.com.log
CustomLog ${APACHE_LOG_DIR}/demo.com.log combined
</VirtualHost>

您可以使用 apachectl 檢查語法是否正確。

sudo apachectl -t

使用以下命令啟用網站。

sudo a2ensite demo.com.conf

創建 DocumentRoot 目錄。

sudo mkdir /var/www/demo.com

創建 PHP 資訊頁面。

cd /var/www/demo.com
sudo vi info.php

添加以下配置並儲存文件

<?php
phpinfo();
?>

重新啟動 Apache2。

sudo systemctl restart apache2

現在打開您的瀏覽器來驗證 PHP 版本。使用以下 URL 格式:

http://<your_ip>/info.php

範例畫面:

5

要測試 php5.6 和 php7.2,只需更新指令碼中的 PHP 版本並重新啟動 apache2。

6

7


步驟6:使用 .htaccess 方案

要使用 .htaccess,我們需要設置 AllowOverride 為 All。

配置範例:


ServerAdmin admin@demo.com
ServerName demo.com
ServerAlias www.demo.com
DocumentRoot /var/www/demo.com

Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted

ErrorLog ${APACHE_LOG_DIR}/err-demo.com.log
CustomLog ${APACHE_LOG_DIR}/demo.com.log combined

搜尋 AllowOverride,將 None 替換為 All,然後重新啟動 Apache2。

sudo systemctl restart apache2

現在進入 DocumentRoot,並創建名為 .htaccess 的文件,並添加以下配置。

SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"

要測試 php5.6 和 php7.2,只需更新指令碼中的 PHP 版本並重新啟動 Apache2。


以上就是本文的內容,希望這能幫到你!

返回部落格目錄