重點摘要:WordPress 白屏三個常見連環卡點——(1) SFTP 帳號跟 www-data 執行身分不同導致權限錯亂;(2) php.ini 改到 CLI 版而非 PHP-FPM 版,設定沒生效;(3) wp-config.php 沒設定 FS_METHOD 觸發 FTP 驗證頁面變白屏。三個都要一起處理才能真正解決。

這個案子的背景

客戶自己在 GCP 主機上用 WordPress 架站,日常用 FileZilla 透過 SFTP 連進主機管理網站檔案。某次上傳/修改後,網站開始出現整頁空白(White Screen of Death),後台也進不去。客戶找上我時,網站已經處於完全打不開的狀態。

先定位問題:三個原因疊在一起

白屏最麻煩的地方是「看不到任何錯誤訊息」,因為正式環境通常會關閉錯誤顯示。實際排查後發現這次是三個獨立問題同時發生,缺一個沒修都無法完全解決:

1

SFTP 帳號與 www-data 執行身分不同

網站實際執行身分是 www-data,但客戶用來連線的 SFTP 帳號是另一組系統帳號。透過 SFTP 上傳的檔案,擁有者會是 SFTP 帳號而非 www-data,造成 WordPress 在寫入某些目錄(例如上傳資料夾)時權限不足。

2

php.ini 改錯路徑

客戶原本想調高上傳限制,改的是 CLI 版的 php.ini,但網站實際是透過 PHP-FPM 執行,設定完全沒有生效。正確位置是 /etc/php/8.1/fpm/php.ini,改完要重啟 php8.1-fpm 服務才會套用。

3

FTP 驗證機制觸發白屏

WordPress 在偵測到寫入權限不足時,某些操作(例如外掛/佈景主題更新)會跳出「請輸入 FTP 憑證」的畫面;但在權限與環境設定不一致的狀況下,這個機制沒有正常運作,直接導致整頁白屏而不是顯示正常的 FTP 驗證表單。

排除步驟

修復 #1
找到正確的 php.ini,調整上傳限制
確認網站是透過 PHP-FPM 執行後,改的是 /etc/php/8.1/fpm/php.ini(而不是 cli/php.ini),調整 upload_max_filesizepost_max_size 等設定,存檔後執行 sudo systemctl restart php8.1-fpm 讓設定生效。
修復 #2
wp-config.php 加入 FS_METHOD 解白屏
wp-config.php 加入 define('FS_METHOD', 'direct');,讓 WordPress 直接用檔案系統寫入,不再跳出 FTP 驗證這個容易出問題的中間步驟,白屏問題解除。
修復 #3
修正檔案權限,把 FTP 帳號加進管理員群組
/var/www/html 底下的目錄權限開到 775、檔案權限開到 664,並把客戶原本使用的 FTP 帳號加入網站檔案所屬的管理員群組,讓 SFTP 上傳的檔案跟 www-data 之間有共同群組權限可以互相讀寫。另外也把客戶家目錄(例如 /home/justcode525)的權限還原成正常的 755,避免權限開太寬造成資安疑慮。

後續追加處理

初步排除白屏問題約兩週後,同一台主機又追加處理了幾個關聯問題,一併整理成正式結案報告書交給客戶:

常見問題

WordPress 網站突然一片白屏,什麼都看不到,是什麼原因?
常見原因包括 PHP 執行錯誤但關閉了錯誤顯示、檔案權限與執行身分不一致、wp-config.php 的 FS_METHOD 設定不當觸發 FTP 驗證、或是外掛/佈景主題衝突。建議先查看伺服器的 PHP error log 定位真正原因,而不是直接重灌。
用 SFTP 上傳檔案後網站出問題,跟權限有關嗎?
很可能有關。如果 SFTP 登入帳號跟網頁伺服器實際執行身分(例如 www-data)不同,上傳的檔案擁有者會是 SFTP 帳號而非 www-data,導致 WordPress 讀寫某些檔案時權限不足。
php.ini 改了設定沒有生效,是什麼問題?
常見原因是改錯了 php.ini 檔案——伺服器上通常有 CLI 版、PHP-FPM 版、Apache 模組版各一份,如果改到 CLI 版但網站實際透過 PHP-FPM 執行,設定不會生效,要改對應 PHP-FPM 的那份並重啟服務。
這次的收穫:白屏問題很少是單一原因,遇到「權限 + 設定路徑 + 觸發機制」疊在一起的狀況,要逐一排除、逐一驗證,不能只改一項就期待問題解決。

如果你的網站也遇到白屏

先別急著重灌或還原備份——很多白屏其實是權限或設定路徑問題,找對地方改,網站通常可以在不動內容的狀況下救回來。歡迎聯絡聊聊你的狀況。