Linux-Mint

LinuxMint 上的 WordPress:無法創建目錄(或寫入文件)

  • August 17, 2016

我使用 Apache2、PHP 和 MySQL 執行 Linux Mint。我已經為 Apache 啟動了模組,以便public_html可以使用使用者並且可以從它們執行 PHP 腳本。我在我的public_html(即~/public_html/wordpress)中安裝了 WordPress,但它並沒有完全工作。

當我嘗試更改背景圖像或標題圖像時,我收到一條錯誤消息,指出無法創建儲存上傳的目錄(年/月或月/年)。

顯然,我的 Web 伺服器無權在public_html或其子目錄(如 下的某些目錄~/public_html/wordpress)中創建目錄 - 可能也無權創建文件。

因此,我想知道我的選擇是什麼。是否有一些我必須添加的模組或一些我必須修復的配置文件,以便 Web 伺服器可以寫入?或者我是否必須更改public_html- 及其子目錄的所有者和/或組(有沒有辦法確保子目錄屬於同一個所有者/組)?…顯然沒有阻止我對我的網頁進行更改。非常歡迎提出建議、建議和最佳實踐。

我知道如果我將 WordPress 作為 root 安裝在 下,我可能會遇到更少的麻煩/var/www,但我更願意避免這種解決方案。

顯然,我的 Web 伺服器無權在 public_html 或其子目錄(如 ~/public_html/wordpress 下的某些目錄)中創建目錄 - 可能也無權創建文件。

這確實很可能是問題所在。但是,您不必將自己鎖定在目錄之外:有許多選項可讓您將文件保留在該目錄中並允許 Web 伺服器對其進行寫入:

  1. 把自己放到www-datagroup:sudo gpasswd -a $(whoami) www-data中,然後更改 public_html 目錄的 group: sudo chown -R $(whoami):www-data ~/public_html。這樣,您和 Web 伺服器都將共享該目錄。
  2. 使用粘性位:這將允許 Web 伺服器將文件寫入目錄,同時還攜帶文件夾的組,允許您仍然以使用者身份訪問上傳目錄:chmod g+rws,o+rwx ~/public_html/wordpress/wp-content.
  3. 使用 ACL 指定高級權限以允許伺服器寫入目錄:setfacl -m u:www-data:rwx ~/public_html/wordpress/wp-content. 如果你走這條路,我建議你閱讀 ACL 的手冊,因為它們非常強大,你可以用它們做很多事情。

警告

但是請注意,上述解決方案都不是非常適合生產環境,因為它們都將允許伺服器上允許執行 PHP 程式碼的任何使用者也將具有 Web 伺服器權限,因此可能會將惡意文件放入您的上傳目錄. 確保使上傳目錄可寫,並確保放置一個禁止從該上傳目錄執行任何程式碼的 .htaccess。對於生產伺服器,我建議以使用者的系統使用者身份執行 PHP,使用 suexec、php-fpm 或任何其他方式在 Web 伺服器之外執行 PHP 程式碼。

引用自:https://unix.stackexchange.com/questions/85961