WordPress 圖片上傳失敗?用 HTTP 狀態碼分辨大小限制與權限問題

同一個 WordPress 網站,小圖可以上傳,大圖卻只顯示「HTTP 錯誤」。也可能所有圖片都失敗,或只有某個帳號遇到問題。先記下檔案格式、大小、發生時間,以及小檔案是否成功;不要看到錯誤就先把上傳資料夾權限設成 777。

第一步:查看上傳請求實際回應

  1. 以具上傳權限的帳號進入「媒體 → 新增媒體檔案」,記下畫面顯示的最大上傳大小。
  2. 在 Edge 按 F12,開啟 Network/網路並篩選 Fetch/XHR,清空清單後上傳一個不含敏感資訊的測試 JPG。若原圖過大,可先準備相同格式的小圖比較。
  3. 點開發生在上傳時間的失敗請求,查看 Headers 的 Status Code 和 Response。依 WordPress 版本或外掛,上傳路徑可能是 async-upload.php、admin-ajax.php 或 REST API;以實際請求為準。

413:代表某一層拒絕了過大的請求,可能是網頁伺服器、代理或 CDN;先比對小圖與大圖結果,以及實際回應來自哪一層。403:查看回應是否來自 WordPress 權限檢查或防火牆,再比對有無特定帳號、檔名或格式才觸發。500:記下時間,請管理員對照 PHP 與網站伺服器錯誤紀錄。狀態碼提供排查方向,並不能單獨證明原因。

有時 HTTP 為 200,但 Response 的 JSON 或內容仍包含上傳處理錯誤;如果前端仍顯示失敗,也要打開回應內容,而不是只看狀態碼。不要把包含 Cookie 或其他登入資訊的完整網路紀錄公開分享。

第二步:大圖失敗時,檢查哪些大小限制?

先到「工具 → 網站健康狀態 → 資訊 → 伺服器」查看目前 PHP 的上傳限制。upload_max_filesize 控制單一檔案大小;post_max_size 控制整個 POST 請求,還包含其他欄位與封裝資料,因此應比單檔上限更大。不同主機可能另有網頁伺服器、反向代理或 CDN 的限制,單改 PHP 不一定能解決 413。

若需要調整,請依目前主機控制台或主機商文件處理,記下原值並選擇符合需求的上限;不熟悉伺服器時,提供檔案大小、狀態碼與錯誤時間給管理員。不要照搬別站的 .htaccess 指令:PHP 的執行方式不同,設定位置也可能不同。

第三步:小圖也失敗時,先縮小範圍

用同一帳號在媒體庫測試小 JPG,再用另一個有上傳權限的帳號測試。只有某帳號失敗時,先檢查角色;所有帳號都失敗時,可在「網站健康狀態 → 資訊 → 檔案系統權限」查看 uploads 目錄是否可寫,並請主機管理員核對磁碟空間、PHP 暫存目錄和伺服器日誌。若回應顯示防火牆阻擋,先核對規則與紀錄,避免全面關閉保護。

確認修正與回復

使用相同帳號與原本失敗的測試檔重新上傳,確認媒體庫有縮圖、可開啟圖片網址,並把圖片插入測試文章查看;若問題只發生在大檔,再同時測小檔與大檔。臨時調整的限制或規則應留下原值,確認影響後再恢復或保留必要設定。若圖片本身過大,可先參考用 Squoosh 壓縮圖片,減少上傳時間與頁面負擔。

參考資料:WordPress 網站健康狀態、WordPress PHP 上傳限制說明、PHP 設定文件。

相連文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *