View Categories

WordPress 升級 PHP 8 會壞嗎?先在測試站跑這幾項檢查

< 1 分鐘閱讀

快速答案:維護得好的 WordPress 站升到 PHP 8 多半不會壞,會壞的是好幾年沒更新的外掛、佈景主題,以及當年寫進 functions.php 或 Code Snippets 的客製程式。我們的做法固定是:先把站複製到測試站切 PHP 8,跑一輪購買、登入、後台編輯,確認沒問題才動正式站。

為什麼會這樣 #

PHP 7.4 早已停止安全更新,主機商會強制淘汰,所以不是要不要升,而是什麼時候升。PHP 8 把很多原本只會出「警告」的寫法改成直接中斷:對不存在的變數呼叫函式、陣列鍵不存在、參數型別不對,都會變成 Fatal error。老外掛和客製碼最常踩到這些。

另一種情況是反過來:有些老問題升了 PHP 反而好了,例如舊版 PHP 的記憶體和上傳限制。所以升級本身不是敵人,沒測試就直接切才是。

怎麼處理 #

  1. 先盤點外掛。到「外掛」列表看每一支的最後更新日期與「已測試至」的 WordPress 版本,超過一兩年沒動的先列為嫌疑。
  2. 開一個測試站(主機商的 staging 或整站副本),只在測試站把 PHP 切到 8.x。正式站先不要動。
  3. 打開 WP_DEBUG_LOG 或看主機的 PHP 錯誤紀錄,把每一條 Fatal error 對到來源檔案,就知道是哪支外掛或哪段程式。
  4. 實際走一遍關鍵流程:首頁、商品頁、加入購物車到結帳頁、會員登入與重設密碼、後台開一頁編輯器、上傳一張圖片、改一筆訂單狀態。
  5. 出錯的外掛先更新;沒有更新可裝就找替代品或問原廠;客製碼交給工程師改寫。
  6. 正式站切換前先做備份點,切換後再跑一次同樣流程。真的不行,主機面板一鍵切回 7.4 即可。

我們實際遇過的情況 #

2022 年主機商開始淘汰舊版 PHP,我們替一批客戶站做 PHP 8 測試。多數站只是幾支外掛要更新就過關;但一家課程平台用的 LMS 主題在 PHP 8 下後台直接報錯,只能等原廠出相容版才切。

一家電商在測試站切到 PHP 8 後,變更訂單狀態會出錯,追到是金流外掛的舊版,更新後就正常。另一家客戶則是切到 PHP 8 之後,原本一直上傳失敗的檔案反而正常了。

也有反例:某快取外掛的 Cloudflare 整合在 PHP 8 有型別 bug,管理員刪文章就跳「網站發生嚴重錯誤」,而且就算沒開整合那段程式還是會跑。這種是原廠 bug,只能先停用該外掛等修正。

什麼時候該找人 #

切換後前台白畫面、切回去也沒恢復;錯誤出現在資料庫或金流相關外掛;或站上有很多不知道誰寫的客製碼。這幾種情況自己硬試,很容易把正式站弄到要從備份還原。

常見問題 #

PHP 7.4 還能繼續用嗎? #

已停止安全更新,主機商會陸續強制淘汰,建議主動排時間升級,而不是被動被切換。

升 PHP 8 後網站白畫面怎麼辦? #

先從主機面板切回 7.4 讓網站恢復,再看 PHP 錯誤紀錄找出是哪支外掛或客製程式出錯。

哪些外掛最容易在 PHP 8 出問題? #

超過一兩年沒更新的外掛、老佈景主題,以及寫在 functions.php 或 Code Snippets 的客製碼。

想有人幫你把更新和 PHP 升級都顧著:網站守護方案。先看體質:免費健檢