www-data 執行身分不同導致權限錯亂;(2) php.ini 改到 CLI 版而非 PHP-FPM 版,設定沒生效;(3) wp-config.php 沒設定 FS_METHOD 觸發 FTP 驗證頁面變白屏。三個都要一起處理才能真正解決。
這個案子的背景
客戶自己在 GCP 主機上用 WordPress 架站,日常用 FileZilla 透過 SFTP 連進主機管理網站檔案。某次上傳/修改後,網站開始出現整頁空白(White Screen of Death),後台也進不去。客戶找上我時,網站已經處於完全打不開的狀態。
先定位問題:三個原因疊在一起
白屏最麻煩的地方是「看不到任何錯誤訊息」,因為正式環境通常會關閉錯誤顯示。實際排查後發現這次是三個獨立問題同時發生,缺一個沒修都無法完全解決:
SFTP 帳號與 www-data 執行身分不同
網站實際執行身分是 www-data,但客戶用來連線的 SFTP 帳號是另一組系統帳號。透過 SFTP 上傳的檔案,擁有者會是 SFTP 帳號而非 www-data,造成 WordPress 在寫入某些目錄(例如上傳資料夾)時權限不足。
php.ini 改錯路徑
客戶原本想調高上傳限制,改的是 CLI 版的 php.ini,但網站實際是透過 PHP-FPM 執行,設定完全沒有生效。正確位置是 /etc/php/8.1/fpm/php.ini,改完要重啟 php8.1-fpm 服務才會套用。
FTP 驗證機制觸發白屏
WordPress 在偵測到寫入權限不足時,某些操作(例如外掛/佈景主題更新)會跳出「請輸入 FTP 憑證」的畫面;但在權限與環境設定不一致的狀況下,這個機制沒有正常運作,直接導致整頁白屏而不是顯示正常的 FTP 驗證表單。
排除步驟
/etc/php/8.1/fpm/php.ini(而不是 cli/php.ini),調整 upload_max_filesize、post_max_size 等設定,存檔後執行 sudo systemctl restart php8.1-fpm 讓設定生效。
wp-config.php 加入 define('FS_METHOD', 'direct');,讓 WordPress 直接用檔案系統寫入,不再跳出 FTP 驗證這個容易出問題的中間步驟,白屏問題解除。
/var/www/html 底下的目錄權限開到 775、檔案權限開到 664,並把客戶原本使用的 FTP 帳號加入網站檔案所屬的管理員群組,讓 SFTP 上傳的檔案跟 www-data 之間有共同群組權限可以互相讀寫。另外也把客戶家目錄(例如 /home/justcode525)的權限還原成正常的 755,避免權限開太寬造成資安疑慮。
後續追加處理
初步排除白屏問題約兩週後,同一台主機又追加處理了幾個關聯問題,一併整理成正式結案報告書交給客戶:
- 核發安裝 Let's Encrypt 憑證,網站改用 HTTPS
- 修復 Apache
AllowOverride設定,讓.htaccess規則能正常生效 - 設定
.htaccess強制將 HTTP 導向 HTTPS - 解決 Elementor 頁面編輯器樣式與圖片破圖問題(多半跟前面權限修正後的快取殘留有關)
- 驗證 SSL 憑證能自動續期,避免之後憑證過期又出問題
常見問題
如果你的網站也遇到白屏
先別急著重灌或還原備份——很多白屏其實是權限或設定路徑問題,找對地方改,網站通常可以在不動內容的狀況下救回來。歡迎聯絡聊聊你的狀況。