更新、刪除或安裝 WordPress 的外掛或佈景主題時,需要提供 FTP 伺服器連線資訊。

這是我第一次碰到的問題,就是當我要安裝、更新或者刪除 WordPress 的外掛或佈景主題時,WordPress 會出現要我提供 FTP 或者 FTPS 的連線資訊。在以往,以自己的 Windows 主機架設 WordPress,或者使用免費的 PHP 空間時,完全不需要類似的設定,而這個畫面,則是我另外架設了 Linux 主機時所碰到的。

因為打算學習一下 Linux,用了 Ubuntu Server 當做我的學習機。因為是採用  LAMP,所以安裝一些服務時,倒也沒碰到什麼大問題,設定的東西也算不上什麼難事。

Apache、PHP、MySQL 初期跑起來,都沒有什麼大問題,都能正常執行,WordPress 安裝過程也通通沒遇到大問題。

不過當我試著刪除或者更新外掛時,卻發現老是要我提供我的 FTP 或者 FTPS 的連線資訊,問題是我的機器根本就沒有 FTP 或 FTPS 服務,暫時我也不需要相關服務。

這時我開始想著一些可能原因,我整體的網路環境及相關設定、WordPress 檔案的權限……等。

網路因素初步排除,因為初步來看對外連線是完全沒有問題。

WordPress 檔案及資料夾權限,用 SSH 連進機器看,初步看起來也沒有什麼問題

突然看到 xmlrpc.php,心想會不會是因為我沒有安裝 php5-xmlrpc,所以造成 WordPress 老是要向我要連線資訊。所以我再安裝了 php5-xmlrpc 組件,再重試一次,真是 shit~,狀況還是一樣。

總覺得,應該和權限有關係,曾經試著把上層資料夾開了很大權限,天真地以為可以解決,但仍然要我提供連線資訊。還特地上 WordPress 官網,找到關於權限的相關設定,再做一次檢查,大致來看好像沒什麼問題。

突然間,我發現一個很奇怪的地方,為什麼 wp-config.php 的群組是 www-data 而不是 john。

這時我開始猜測,或許我一開始所想的權限問題的方向是對的。我開始思考並細想 Linux 的一些權限問題。突然間似乎有了靈感:

我的 Apache 是以 www-data 這個身份來執行,它屬於 www-data 這個群組。以我圖中來講,除了 wp-config.php,其他的檔案或資料夾,只有擁有者擁有最大的權限,其他的使用者及群組,都只有讀取功能。

試想,WordPress 不管是安裝、刪除或者更新,都需要變更檔案或刪除檔案,在權限不足的情況下,啥事都不能幹,想通了這點,索性把檔案的擁有者和群組都設為 www-data。

果然,真的是因為權限的問題!

想一想,因為我是用 SSH 進到 Linux 下載 WordPress 並且解壓縮,所以擁有者和群組,都是 john,也就難怪 www-data 這身份或群組的人,啥事都不能幹。

通常情況,在 Windows 上架設 WordPress 或者在共享主機上架設 WordPress,都不會碰到類似情況,權限也不需要特別做調整,但可能我的環境比較特別,或者我對 Linux 有些細節還不很瞭解,才讓我碰到吧。

雖然目前都能運作了,但或許我的權限、擁有者、群組的相關設定仍然有誤,或者觀念上仍需做一些調整,如果大家對於這部份有一些其他想法和建議,非常歡迎讓我知道 ^_^

附帶一提,根據官方資料指出,如果是在共享主機上架設,權限的設定大致如下:

  • 資料夾的權限應該要是 755 或是 750
  • 所有檔案的權限應該是 644 或是 640,唯一例外的是 wp-config.php,它應該要是 440 或是 400
  • 不論如何,請不要把資料的權限設為 777

參考資料:

https://codex.wordpress.org/Changing_File_Permissions#Shared_Hosting_with_suexec

發佈留言

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

這個網站採用 Google reCAPTCHA 保護機制,這項服務遵循 Google 隱私權政策服務條款