多 1 個站長,資訊.音樂人同學會 – 如何從 PHP 7.4 .33 升級到 PHP 8.3.8:為 WordPress 6.8.2 打造(高效能)網站呢 ?

隨著 PHP 8.3.8 的發布,WordPress 網站管理員迎來了提升性能與安全性的絕佳機會,本文將分享在 CentOS 7 上運行 WordPress 6.8.2 的網站,從 PHP 7.4 .33 升級到 PHP 8.3.8,涵蓋升級前準備、升級過程、升級後驗證及最佳化建議,確保網站穩定運行,並提供配置建議以提升 WordPress 效能。

為什麼升級到 PHP 8.3.8?

PHP 8.3.8 帶來了顯著的性能提升和安全性增強,特別適合 WordPress 6.8.2:

  • 性能提升:引入 JIT(即時編譯)技術,加速 PHP 腳本執行,特別適用於 WordPress 的外掛和主題。
  • 安全性增強:修補了 PHP 7.4 .33 的安全漏洞,支援更現代的加密算法。
  • 新功能:改進型別系統、錯誤處理和 WordPress 相容性。
  • 長期支援:PHP 7.4.33 已於 2022 年 11 月停止支援,升級到 PHP 8.3 .8 可確保未來相容性。

1. 備份網站與伺服器-建議可用 20200428-Focal-Amd64-2025-08-08 做整機備份較保險

2. 檢查當前 PHP 版本與環境

確認當前 PHP 版本和已安裝模組,確保升級前的環境狀態:

php -v
rpm -qa | grep php

  • 執行 php -v 確認當前版本為 PHP 7.4.33。
  • 使用 rpm -qa | grep php 列出已安裝的 PHP 套件。

3. 安裝必要工具與儲存庫

為升級 PHP 8.3.8,需安裝 EPEL 和 Remi 儲存庫:

sudo yum install -y epel-release
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum install -y yum-utils

4. 啟用 Remi PHP 8.3.8 儲存庫

啟用 Remi 儲存庫的 PHP 8.3.8 分支,並檢查可用套件:

sudo yum-config-manager --enable remi-php83
sudo yum list available php --enablerepo=remi-php83
sudo yum info php --enablerepo=remi-php83

升級過程:執行 PHP 8.3 .8 安裝

完成準備後,執行以下步驟升級到 PHP 8.3。

1. 停止相關服務

停止 Apache 和 PHP-FPM 服務,避免升級過程中的衝突:

sudo systemctl stop httpd
sudo systemctl stop php-fpm

2. 移除 PHP 7.4

移除現有 PHP 7.4 套件:

sudo yum remove php* --enablerepo=remi-php74

3. 安裝 PHP 8.3.8

安裝 PHP 8.3.8 及其 WordPress 所需模組:

sudo yum install -y php php-fpm php-cli php-common php-mysqlnd php-mbstring php-gd php-curl php-zip php-bcmath php-intl php-xml php-soap php-opcache --enablerepo=remi-php83

升級後:驗證與最佳化

升級完成後,需驗證 PHP 8.3 .8 是否正常運作,並最佳化 WordPress 效能。

1. 驗證 PHP 版本

檢查 PHP 版本:

php -v
  • 預期輸出
  PHP 8.3.8 (cli) (built: Jun 11 2024 08:29:33) (NTS)

多次執行 php -v,確認升級成功。

2. 測試 PHP 配置

創建臨時 PHP 資訊頁面:

echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php
  • 訪問 https://www.techx.idv.tw/info.php,確認 PHP 8.3.8 配置。
  • 移除測試頁面以確保安全:
  sudo rm /var/www/html/info.php

3. 重啟服務

重啟 PHP-FPM 和 Apache,應用新配置:

sudo systemctl restart php-fpm
sudo systemctl restart httpd
  • 檢查服務狀態:
  sudo systemctl status php-fpm
  sudo systemctl status httpd

4. 最佳化 PHP 配置

編輯 /etc/php.ini 以最佳化 WordPress 6.8.2 效能:

sudo nano /etc/php.ini
  • 建議設置
  memory_limit = 256M
  upload_max_filesize = 100M
  post_max_size = 100M
  max_execution_time = 300
  max_input_vars = 3000

  date.timezone = Asia/Taipei

  opcache.enable=1
  opcache.memory_consumption=128
  opcache.max_accelerated_files=10000
  opcache.jit=tracing
  opcache.jit_buffer_size=50M
  • 說明
  • memory_limit:支援大型外掛。
  • upload_max_filesizepost_max_size:允許上傳大檔案。
  • opcache.jit:啟用 JIT 提升性能。
  • date.timezone:確保正確時間戳。

5. 驗證網站功能

  • 執行 ping www.techx.idv.tw,確認網站可存取。
  • 檢查 /var/www/html/wp-config.php 的資料庫設定:
    php define('DB_HOST', 'localhost'); define('DB_USER', 'your_username'); define('DB_PASSWORD', 'your_password'); define('DB_NAME', 'your_database');
  • 確保 MySQL/MariaDB 服務運行:
    bash sudo systemctl start mysqld

小編結論與分享價值

小編從 PHP 7.4 .33 升級到 PHP 8.3.8 確實為 WordPress 6.8.2 網站帶來了(顯著的)性能提升和安全性增強

  • 備份與準備:確保資料安全,檢查相容性。
  • 升級過程:順利移除 PHP 7.4.33,安裝 PHP 8.3.8。
  • 最佳化與驗證:配置 OPcache、修復資料庫問題,確保網站穩定。

  • 重開機及重啟服務:僅在必要時(如服務無法啟動)執行:
sudo systemctl restart php-fpm
sudo reboot


小編小記

SERVER 2025 如何以 dos 指令把,如 H 磁碟的(所有資料夾),(不包含)其中檔案,(完整 Copy 至 L 磁碟)在(轉移資料夾)時很有用2025-10-12 OK

C:\Users\ethan>robocopy H:\ L:\ /E /CREATE /ETA /R:1 /W:1 /NP /LOG:robocopy_log.txt,2025-10-12 OK(推薦)

執行此命令後,您可以在 robocopy_log.txt 檔案中找到所有詳細資訊,而在命令提示字元視窗中,您將看到更簡潔的進度更新,包括已複製的目錄和零長度檔案的計數,
以及預計完成時間,而不會被快速滾動的百分比資訊淹沒。

E:\:這是您的來源目錄,即您要複製資料夾結構的磁碟機或路徑。
H:\:這是您的目標目錄,即資料夾結構將被複製到的位置。
/E:此參數用於複製所有子目錄,包括空的子目錄,這確保了完整的資料夾層次結構被保留。
/CREATE:這是關鍵參數,它會建立目錄樹和零長度檔案,這意味著它會複製所有資料夾,但不會複製檔案的實際內容,而是為每個檔案建立一個同名但大小為零的佔位符。
/TEE:此參數會將輸出同時顯示在主控台視窗和日誌檔案中(如果同時使用了 /LOG 參數),這有助於您即時監控進度。
/ETA:此參數會顯示複製檔案的預計完成時間,這提供了對操作進度的估計。
/R:1:設定重試失敗檔案的次數為 1 次,這有助於處理暫時性的檔案存取問題。
/W:1:設定重試之間的等待時間為 1 秒,這與 /R 參數配合使用。

這樣,無論您從哪個目錄執行命令,日誌檔案都會被寫入 C:\Logs\ 目錄中(請確保該目錄存在或 robocopy 有權限建立它)。

Robocopy 預設會顯示每個檔案的複製進度百分比,當複製大量小型檔案時,這些百分比更新會導致輸出快速捲動,使用 /NP 參數可以抑制這些個別檔案的進度百分比顯示。

H:>xcopy H:\ L:\ /T /E /Y

參數說明:

  • H:\:來源磁碟 ( H 磁碟)。
  • L:\:目標磁碟 (L 磁碟)。
  • /T:僅複製資料夾結構,不複製檔案。
  • /E:包含空資料夾和子資料夾。
  • 覆蓋提示:如果 L 磁碟中已有同名資料夾,xcopy 可能會提示是否覆蓋,可以加 /Y 參數來自動確認覆蓋


探索更多來自 多 1 個站長 的內容

訂閱即可透過電子郵件收到最新文章。

5 則留言

匿名訪客 發表迴響取消回覆

探索更多來自 多 1 個站長 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading