WordPress 教學:當部落格無法上傳媒體檔案(圖片)時檢查這些設定

WordPress 是國際知名的內容管理系統(CMS,Content Management System),也是許多全球部落客們的最愛。比起 Google Blogger 或是國內出名的 Xuite 部落格網站,WordPress 優點除了支援眾多外掛外,另一個就是可以隨心所欲的轉換伺服器,方便未來運算尺度上的擴充。

前些日子幫人將 WordPress 網站搬到 Bluehost 伺服器,在轉移後的測試中意外發現編輯文章時沒辦法新增圖片。就算直接到控制台(Dashboard)新增媒體檔案也被拒絕,並出現如下圖一所示的錯誤提示「上傳的檔案無法被移動至 images/…」。

Wordpress-Can-not-Upload-Image-Media-Files
圖一,WordPress 新增媒體時的錯誤提示。

為了解決這個問題,首先進入 WordPress 位在 Linux 作業系統下的資料夾中查看相關權限是否設定正確。

請參考下圖二,專門用來存放多媒體檔案的 uploads 資料夾的檔案權限是「rwxr-xr-x」,第一組「rwx」代表擁有者(owner)可以讀取、寫入與執行,第二組「r-x」代表群組(group)可以讀取與執行,第三組「r-x」代表其他人(other)可以讀取與執行。

Linux-User-Group-Uploads
圖二,多媒體資料夾的檔案屬性。

一般來說,只要試著輸入下列指令將 uploads 資料夾屬性設定成三組權限都是全開放(rwx)後,應該就能在 WordPress 中新增多媒體檔案。

chmod 777 uploads

換言之,這是系統權限的錯誤設定所造成,雖然我知道有些人是採用這種治標不治本的方法,但是過度開放權限可是會替網站帶來安全性隱憂。

為此,我們需要進一步查看到底是哪裡設定錯誤。

後來我發現上圖二的 uploads 檔案屬性中存在兩個問題,分別是檔案所屬群組被設為「root」,而檔案擁有者同樣也被為「root」,代表這個資料夾是 root 所擁有。

一般新建好的 WordPress 資料夾不會發生這種狀況,但是由於那位仁兄想在同一個伺服器下架設多組網站,因此我設定了不同使用者帳號去各自建立網站,再加上一些資料處理上的問題,便產生今天造成錯誤的狀況。

Linux 操作提示:在指令前方加「sudo」指令,可用 root 權限進行設定。

因此,我們接下來就是要將資料夾的所屬群組與擁有者都指定給正確的用戶(只要參考上下資料夾就能知道正確的群組名稱與擁有者)。

在 Linux 底下,通用的群組設定指令是 chgrp(Change Group),擁有者設定指令是 chown(Change Owner)。接著輸入以下兩道指令便能將 uploads 設定成正確的所有者權限:

chgrp GROUP_NAME uploads/
chown USER_NAME uploads/

不過你要是以為這樣輸入就沒問題的話,就會犯了跟我先前一樣的錯誤。

請參考下圖三,在 WordPress 上傳媒體時又出現了先前圖一的錯誤,我才想到資料夾下還有資料夾。

Linux-User-Group-Uploads-Years-Months
圖三,多媒體資料夾下子資料夾屬性。

大家可以在圖三中發現,/images/ 下的每一組資料夾的所屬群組與擁有者也都還是 root。所以最好的解決方案是一次就把整份資料夾,以及旗下所屬資料夾與檔案通通設定成正確的所屬群組與擁有者。因此我們可以在 /wp-content/ 底下輸入下面指令和參數一次解決所有問題。

chown -R User_Name:Group_Name uploads

其中「User_Name」與「Group_Name」之間的「:」冒號,是用來聯合輸入所屬群組與擁有者,如此一來就不用輸入一堆指令囉。

分享您的想法

發佈留言

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