Linux 無法寫入許可權問題 | Wordpress 不能自動安裝主題、插件

来源:https://www.cnblogs.com/lalaluna/archive/2022/10/26/16828628.html
-Advertisement-
Play Games

折騰好 Wordpress,開始安裝插件了,結果直接報錯 Installation failed: Could not create directory 當時站點健康工具(Site Health)里的文件系統許可權(Filesystem Permissions) 全是 Not Writable 搜了一 ...


折騰好 Wordpress,開始安裝插件了,結果直接報錯

Installation failed: Could not create directory

當時站點健康工具(Site Health)里的文件系統許可權(Filesystem Permissions) 全是 Not Writable

image

搜了一圈,這篇文章解決了我的問題:

Linux無法寫入許可權問題 & 解決Wordpress不能自動安裝主題、插件
Author:flymorn Source:飄易

正 文:
當你的wordpress遇到以下問題時:

  1. 不能上傳圖片
  2. 不能自動安裝主題、插件(需要FTP賬戶)
  3. 不能自動更新
  4. 其它任何需要wordpress寫文件的問題

這些問題基本都是一個原因,你的wordpress目錄不屬於當前的用戶和組,即web訪問的用戶沒有許可權操作wp的一切需要寫許可權的操作,其實就是linux下許可權不足,無法寫入造成的。

解決方法:

首先需要你有root許可權,SSH登錄,進入到wp的安裝目錄:

cd /var/www/html/my_wp_blog

給予所有的寫許可權:

chmod 777 wp-content

接下來給你的博客的文章上傳一張圖片,WP會生成一個目錄,然後查看是哪個用戶創建了文件夾。一般情況下,這個用戶名叫“apache”,也有不少人發現這個用戶是“nobody”,就飄易本身遇到的問題,我在VPS上安裝的是LNmp,這個用戶是“www”。

進入到wp的wp-content目錄,查看該目錄下所有文件/文件夾的許可權,所屬用戶、用戶組:

cd wp-content
ls -l
total 16
-rw-r–r– 1 root root   30 May  4  2007 index.php
drwxr-xr-x 3 root root 4096 Feb 10 19:31 plugins
drwxr-xr-x 5 root root 4096 Mar 23 03:04 themes
drwxrwxrwx 3 www www 4096 Mar 24 02:08 uploads

註意上傳目錄 uploads 是用戶 www 創建的。
接下來把wp-content許可權還原到 755::

cd ..
chmod 755 wp-content

下來就是實際修複的命令了,改變wp所在文件夾的擁有者為剛找到的這個用戶www:

cd ..
chown -R www:www my_wp_blog

備註:補充以另外一種查找當前用戶和組的名稱的方法:
打開:

/usr/local/php/etc/php-fpm.conf

裡面有 user和group項,看他們的值是什麼,如下圖:

image

Linux無法寫入許可權問題 & 解決Wordpress不能自動安裝主題、插件
OK,問題解決了。下麵是英文的原文:

There are a wide variety of problem reports appearing on support forums related to Wordpress that all have one root cause and solution. Here are some common issue descriptions:

  • Problems uploading images
  • Problems installing themes, plugins
  • Problems auto-upgrading Wordpress
  • Anything else where Wordpress needs to write files

And here is a typical error message:

“To perform the requested action, connection information is required.” Or…
“Unable to create directory [...]. Is its parent directory writable by the server?”

The problem is that Wordpress is executing in the context of your web server process, but the directories have write permissions based on the user context used to originally create the directories.

Many of the suggested solutions on the web simply won’t work, while other solutions work but create security problems with your Wordpress installation. Here is the full solution that should work on all Linux systems, regardless of the specific environment.

What we are going to do is give your web server ownership of the directories and files of your Wordpress install. This requires you to be knowledgeable and comfortable in your bash shell environment, which is probably reasonably true if you installed Wordpress yourself.

First we will give everybody write access so that WP can write the content directories. Some solutions on the web stop at this step, but this leaves your files with no filesystem security. We are only doing this briefly in order to determine what user context is being used by the web server.

Go to your Wordpress root directory:

cd /var/www/html/my_wp_blog

Give the world write access to the content directory:

chmod 777 wp-content

Now log into Wordpress and upload a photo to a blog post, causing WP to create the new directories required. Then look on the server to see what user created the directories. This would commonly be apache, but also many people are reporting that this is the user “nobody” on their server.

cd wp-content
ls -l

total 16
-rw-r–r– 1 root root   30 May  4  2007 index.php
drwxr-xr-x 3 root root 4096 Feb 10 19:31 plugins
drwxr-xr-x 5 root root 4096 Mar 23 03:04 themes
drwxrwxrwx 3 apache apache 4096 Mar 24 02:08 uploads

Notice that the uploads directory was created by user apache:apache. This is the information you needed. Go back down one dir level and set the permissions back to a secure level.

# cd ..
# chmod 755 wp-content

Now for the actual fix. Recursively set the owner and group for your Wordpress installation to the user that created the uploads directory.

# cd ..
# chown -R apache:apache my_wp_blog

You’re done. Wordpress now has access to the file system for photo and attachment uploads, automatic upgrades, and anything else needed by your plugins.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 嗨嘍~大家好呀,這裡是魔王吶 ! 網上有很多的創意二維碼,看了,別的不說 羡慕肯定是有的,羡慕有了這不得自己整點活~ 今天我們就來試試只用幾行代碼,生成動態二維碼! 開發環境: Python 3.8 Pycharm 模塊使用: 第三方模塊 需要安裝 在cmd裡面 進行 pip install ...
  • Java 8 系列文章 持續更新中 日期時間API 也是Java 8重要的更新之一,Java從一開始就缺少一致的日期和時間方法,Java 8 Date Time API是Java核心API的一個非常好的補充。 為什麼需要新的日期時間API Java中現有的與日期和時間相關的類存在一些問題: 日期時間 ...
  • 這裡我們以QQ郵箱為例。 一、導入依賴: <dependencies> <!-- https://mvnrepository.com/artifact/javax.activation/activation --> <dependency> <groupId>javax.activation</gr ...
  • 泛型 泛型定義 Scala的泛型和Java中的泛型表達的含義都是一樣的,對處理的數據類型進行約束,但是Scala提供了更加強大的功能 scala中的泛型採用中括弧 scala中的泛型是不可變的 泛型和類型不是一個層面的東西 所以scala中泛型和類型無法聯合使用 泛型語法 如果能將類型和泛型當成一個 ...
  • 核心功能點 【1】服務註冊:Nacos Client會通過發送REST請求的方式向Nacos Server註冊自己的服務,提供自身的元數據,比如ip地址、埠等信息。Nacos Server接收到註冊請求後,就會把這些元數據信息存儲在一個雙層的記憶體Map中。 【2】服務心跳:在服務註冊後,Nacos ...
  • 1、項目模塊介紹 2、 父項目 主要依賴 spring-cloud 的 版本控制 <properties> <!-- springCloud 版本 --> <scd.version>Dalston.SR4</scd.version> </properties> <dependencyManageme ...
  • RabbitMQ安裝說明文檔(超詳細版本) 1. 安裝依賴環境 線上安裝依賴環境: yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 n ...
  • 在服務端開發中,緩存常常被當做系統性能扛壓的不二之選。在實施方案上,緩存使用策略雖有一定普適性,卻也並非完全絕對,需要結合實際的項目訴求與場景進行綜合權衡與考量,進而得出符合自己項目的最佳實踐。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...