PHP 是一種廣泛使用的伺服器端腳本語言,專為 Web 開發而設計,但也用作通用程式語言。它特別適合創建動態和互動式網站。安裝最新版本的 PHP(例如 8.3、8.2 或 8.1)可確保您能夠存取最新功能、效能改進和安全性修補程式。在 CentOS Stream 9 上,您可以使用 Remi RPM 儲存庫輕鬆安裝這些版本,該儲存庫因提供最新的 PHP 軟體包而聞名。
本指南將引導您完成啟用 Remi 儲存庫並在 CentOS Stream 9 上安裝最新 PHP 版本的過程。
在 CentOS 上導入 Remi PHP RPM
安裝 PHP 之前更新 CentOS Stream
首先更新 CentOS Stream 系統以確保所有現有軟體包都是最新的,這一點至關重要。此步驟對於系統穩定性和安全性至關重要。
開啟終端機並執行以下命令來更新系統:
sudo dnf upgrade --refresh
此命令刷新您的軟體包資料庫並將所有已安裝的軟體包升級到最新的可用版本。
導入 Remi PHP RPM 儲存庫
Remi PHP 儲存庫是一個提供最新 PHP 版本的第三方儲存庫。在新增 Remi 儲存庫之前,您必須安裝 EPEL 儲存庫,它為 Enterprise Linux 提供額外的軟體套件。
首先,建議啟用 CodeReady Linux Builder (CRB) 儲存庫,儘管這是可選的。它提供了額外的開發人員工具和函式庫。啟用 CRB:
sudo dnf config-manager --set-enabled crb
啟用 CRB 後,使用下列指令安裝 EL9 的 EPEL 儲存庫:
sudo dnf install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm
最後,導入 EL9 的 Remi PHP 儲存庫:
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
在 CentOS Stream 上啟用 PHP Remi 儲存庫
列出可用的 PHP 模組
在安裝 PHP 之前,必須確定 Remi 儲存庫中可用的 PHP 版本。此步驟可協助您就安裝哪個版本做出明智的決定。
使用以下命令列出所有 PHP 模組:
dnf module list php
此命令顯示 Remi 儲存庫中可用的所有 PHP 版本。這是確保您選擇最適合您要求的版本的關鍵步驟。
為 Remi 的儲存庫導入 GPG 金鑰
出現提示時,您必須確認匯入 Remi 儲存庫的 GPG 金鑰。出於安全原因,此步驟至關重要,因為它會驗證您要安裝的軟體包的真實性。當要求繼續導入時輸入“Y”。
啟動您所需的 PHP 版本
確認可用的 PHP 版本後,您可以啟用適合您需求的特定版本。建議為您的專案選擇穩定且支援良好的 PHP 版本。
若要從 Remi 儲存庫啟用特定 PHP 版本,請使用下列命令:
sudo dnf module enable php:remi-8.3 -y
sudo dnf module enable php:remi-8.2 -y
sudo dnf module enable php:remi-8.1 -y
每個命令都會從 Remi 儲存庫啟動不同版本的 PHP。選擇與您要安裝的版本相對應的命令。這些命令中的“-y”標誌表示自動確認安裝,從而簡化了過程。
在 CentOS Stream 上安裝 PHP 8.3、8.2 或 8.1
選擇用於 PHP 安裝的 Web 伺服器
選擇合適的 Web 伺服器是設定 PHP 的關鍵步驟。 CentOS Stream 同時支援 Apache 和 Nginx,每個都需要不同的 PHP 套件。
Apache (httpd) PHP 安裝
對於使用 Apache 作為 Web 伺服器的用戶,以下命令將安裝 PHP 以及 PHP 命令列介面 (CLI),這對於從命令列執行 PHP 腳本至關重要:
sudo dnf install php php-cli -y
Nginx PHP 安裝
如果您使用 Nginx,則需要安裝 PHP FastCGI Process Manager (FPM) 以及 PHP CLI。 PHP-FPM 是另一種 PHP FastCGI 實現,對於流量大的網站非常有效率:
sudo dnf install php-fpm php-cli -y
驗證 PHP 安裝
安裝後,確認 PHP 已正確安裝非常重要。執行以下命令檢查已安裝的PHP版本:
php -v
此指令顯示目前 PHP 版本,驗證安裝是否成功。
安裝常用 PHP 擴充
若要增強 PHP 功能,您可能需要安裝其他擴充功能。下面的命令安裝常用的 PHP 擴展,這對於各種 CMS 平台和開發需求至關重要:
sudo dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache
建議檢查並省略您的設定不需要的任何擴充功能。
查看載入的 PHP 模組
若要檢查目前載入的 PHP 模組,請執行:
php -m
建議定期監控和修剪不必要的模組,以保持最佳的系統效能。
安裝PHP開發分支
對於特定的開發需求,您可能需要 PHP 開發分支。安裝它:
sudo dnf install php-devel
注意:此安裝引入了多個依賴項。僅當您的 PHP 開發環境有特定需求時才繼續。
新增PHP開發工具
對於進階開發功能(包括調試),請使用以下命令安裝其他工具:
sudo dnf install php-xdebug php-pcov
這些工具對於 PHP 中的偵錯和程式碼覆蓋率分析至關重要,但請小心它們引入的額外依賴項。
在 CentOS Stream 上為 PHP-FPM 設定 Nginx 用戶
編輯 Nginx 的 PHP-FPM 配置
在 CentOS Stream 中,PHP-FPM 的預設使用者設定為“Apache”,這與 Nginx 設定不相容。要針對 Nginx 最佳化 PHP-FPM,需要更改配置。
存取 PHP-FPM 配置
首先開啟 PHP-FPM 設定檔。此檔案包含特定於 PHP-FPM 如何與 Web 伺服器互動的設定。使用以下命令編輯 www.conf 檔案:
sudo nano /etc/php-fpm.d/www.conf
此命令啟動帶有 PHP-FPM 設定檔的 Nano 文字編輯器。
修改使用者和群組設定
在設定檔中,找到指定使用者和群組的行。預設情況下,這些設定為“Apache”。將使用者和群組都變更為“Nginx”,以使 PHP-FPM 服務與 Nginx 保持一致:
; Unix 使用者/進程群組;註:用戶為必填項。如果不設定群組,則預設使用者所屬群組;將被使用。 ; RPM: apache 選擇能夠以 httpd user = nginx 的方式存取某些目錄; RPM:保留一個允許在日誌目錄中寫入的群組。組=nginx
這是一個有效的視覺範例:
儲存並退出設定文件
進行變更後,按 CTRL+O 儲存文件,然後按 CTRL+X 退出。此操作將儲存修改並關閉 Nano 編輯器。
重新啟動 PHP-FPM 服務
若要套用更改,請使用下列命令重新啟動 PHP-FPM 服務:
sudo systemctl restart php-fpm
此命令可確保 PHP-FPM 在 Nginx 使用者和群組下開始運行,從而確保 CentOS Stream 上 Nginx Web 伺服器設定的兼容性和增強的安全性。
Nginx PHP-FPM 伺服器區塊程式碼範例
設定 Nginx 伺服器區塊以進行 PHP 處理
若要在 CentOS Stream 上啟用 Nginx 中的 PHP 處理,必須修改 Nginx 設定檔中的伺服器區塊。以下範例示範了處理 PHP 檔案的必要配置。此設定需要指定 PHP 位置區塊。
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
此程式碼確保 Nginx 正確處理 PHP 文件,將它們重新導向到 PHP-FPM 處理器。這是一個快速細分:
- location ~ .php$:指令告訴 Nginx 將下列規則套用於任何以 .php 結尾的檔案。波形符 ~ 表示這是正規表示式匹配。
- try_files $uri =404:此行檢查指定 URI 中是否存在 PHP 檔案。如果不存在,Nginx 將傳回 404 錯誤。這是防止未經授權的腳本執行的安全措施。
- fastcgi_pass unix:/run/php-fpm/www.sock;:此指令指定 PHP-FPM 服務正在偵聽的套接字。在這種情況下,Nginx 透過 /run/php-fpm/www.sock 套接字將 PHP 請求傳遞給 PHP-FPM 進程。
- fastcgi_index index.php;:這將index.php設定為存取目錄時要執行的預設腳本。
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;:此行設定 SCRIPT_FILENAME 參數,該參數對於 PHP-FPM 在檔案系統上尋找腳本檔案至關重要。它將文檔根目錄與腳本名稱組合在一起。
- include fastcgi_params;:這包括Nginx提供的預設FastCGI參數。這些是 PHP-FPM 正常運作所需的標準設定。
此配置可確保 Nginx 透過將 PHP 請求傳遞給 PHP-FPM 服務進行處理來正確處理 PHP 請求,這是在 Nginx 伺服器上執行基於 PHP 的網站和應用程式的關鍵步驟。
驗證 Nginx 配置
更新伺服器區塊後,使用下列命令驗證 Nginx 設定是否有任何語法錯誤:
sudo nginx -t
確認語法檢查成功的範例輸出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
此步驟可確保您的 Nginx 設定沒有語法錯誤並準備好實作。
重啟 Nginx 服務
若要套用 PHP-FPM 設定更改,請重新啟動 Nginx 服務:
sudo systemctl restart nginx
這次重新啟動使變更生效,允許 Nginx 使用更新的伺服器區塊配置處理 PHP 檔案。
結論
透過在 CentOS Stream 9 上透過 Remi RPM 儲存庫安裝 PHP,您可以確保您的系統配備了最新穩定版本的 PHP,包括 8.3、8.2 和 8.1。此設定可為您的 Web 應用程式提供增強的效能、對最新功能的存取以及更高的安全性。透過 Remi 儲存庫定期更新 PHP 將使您的系統保持安全並隨時了解 PHP 的最新發展。享受 PHP 為建立和維護動態 Web 應用程式提供的靈活性和強大功能。