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

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

2024/5/30 , 由 Wanding 編寫發布

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。


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

返回
部落格
首頁  >  部落格目錄  >  如何在Web Server上使用 Apache 安裝多個 PHP 版本

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

2024/5/30 , 由 Wanding 編寫發布

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。


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

返回