如何在Web Server上使用 Apache 安裝多個 PHP 版本
如何在Web Server上使用 Apache 安裝多個 PHP 版本
![](/sites/default/files/styles/normal_size/public/2024-05/mutiple-php_0.png?itok=GTgGyq9S)
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:安裝 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/
範例畫面:
一些常用的 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
範例畫面:
步驟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
範例畫面:
要測試 php5.6 和 php7.2,只需更新指令碼中的 PHP 版本並重新啟動 apache2。
步驟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 的文件,並添加以下配置。
要測試 php5.6 和 php7.2,只需更新指令碼中的 PHP 版本並重新啟動 Apache2。
以上就是本文的內容,希望這能幫到你!