簡體   English   中英

WordPress 要求我提供 FTP 憑據以安裝插件

[英]WordPress asking for my FTP credentials to install plugins

我在本地系統中安裝了一個 WordPress 博客。 但是當我嘗試從管理員添加插件時,它會要求 FTP 訪問。 我需要為 WordPress 配置什么才能在沒有 FTP 的情況下上傳?

嘗試在 wp-config.php 中添加代碼:

define('FS_METHOD', 'direct');

如果您使用的是 Ubuntu。

sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER

“每當您使用 WordPress 控制面板自動安裝、升級或刪除插件時,WordPress 都必須對文件系統上的文件進行更改。

在進行任何更改之前,WordPress 首先檢查它是否有權直接操作文件系統。

如果 WordPress 沒有直接修改文件系統的必要權限,系統會要求您提供 FTP 憑據,以便 WordPress 可以嘗試通過 FTP 執行所需的操作。”

解決方案:為了找出您的 apache 實例以什么用戶身份運行,請創建一個包含以下內容的測試腳本:

<?php echo(exec("whoami")); ?>

對我來說,它是守護進程而不是 www-data。 然后,通過以下方式修復權限:

sudo chown -R daemon /path/to/your/local/www/folder

我遞歸地將wordpress文件夾的所有權更改為www-data並重新啟動了apache。

sudo chown -R www-data:www-data <folderpath>

它就像一個魅力!

在 OSX 上,我使用了以下內容,並且效果很好:

sudo chown -R _www:_www {path to wordpress folder}

_www 是在 Mac 上運行 PHP 的用戶。

(您可能還需要 chmod 一些文件夾。我先完成了它,但沒有修復它。直到我執行 chown 命令才有效,所以我不確定它是否是 chown 命令單獨,或 chmod 和 chown 的組合。)

如果在安裝插件期間,Wordpress 會詢問您的主機名或 FTP 詳細信息。 然后按照以下步驟操作:

登錄到您的服務器並導航到/var/www/html/wordpress/ 打開 wp-config.php 並在 define('DB_COLLATE') 之后添加這一行

define('FS_METHOD', 'direct');

如果您收到“無法創建目錄”錯誤。 以遞歸方式為您的 wordpress 目錄授予寫權限

chmod -R go+w wordpress

筆記。 為安全起見,請在安裝插件后撤銷這些權限

chmod -R go-w wordpress

我按照此處概述的步驟在 Ubuntu 14.04 上進行了 WordPress 本地安裝並簡單地運行:

sudo chown -R www-data:www-data {path_to_your_project_directory}

解決了我下載插件的問題。 我在這里留下這篇文章的唯一原因是因為當我用谷歌搜索我的問題時,這是第一個結果,它引導我解決了我的問題。

希望這對任何人都有幫助!

從谷歌的第一次點擊開始

當 WordPress 無法直接訪問文件時,它會要求您提供 FTP 憑據。 這通常是由 PHP 作為 apache 用戶(mod_php 或 CGI)而不是擁有 WordPress 文件的用戶運行引起的。

這在大多數共享主機環境中是相當正常的——文件以用戶身份存儲,而 Apache 以用戶apachehttpd身份運行。 這實際上是一個很好的安全預防措施,因此漏洞利用和黑客無法修改托管文件。 您可以通過將所有 WP 文件設置為 777 安全性來規避此問題,但這意味着沒有安全性,因此我強烈建議您不要這樣做。 只需使用 FTP,這是有充分理由的自動建議解決方法。

這個問題有很多類似的回答,但沒有一個完全觸及根本原因。 Sebastian Schmid 對原始帖子的評論涉及但不完全。 這是我截至 2018-11-06 的看法:

根本原因

當您嘗試通過 WordPress 管理界面上傳插件時,WordPress 將調用一個名為“get_filesystem_method()”的函數(參考: /wp-admin/includes/file.php :1549)。 此例程將嘗試將文件寫入相關位置(在本例中為插件目錄)。 如果沒有正確設置文件權限以允許 WordPress 用戶(認為執行 php 的用戶身份)將文件寫入相關位置,它當然會在此處立即失敗。

如果可以創建文件,則此函數會檢測臨時文件的文件所有者以及函數當前文件的文件所有者(參考: /wp-admin/includes/file.php :1572)並比較兩者。 如果它們匹配,那么用 WordPress 的話來說,“WordPress 正在以與 WordPress 文件相同的所有者創建文件,這意味着通過 PHP 修改和創建新文件是安全的”,並且您的插件在沒有 FTP 憑據提示的情況下成功上傳。 如果它們不匹配,您會收到 FTP 憑據提示。

修復

  1. 確保插件目錄可由運行您的 php 進程的身份寫入。
  2. 確保運行您的 php 進程的身份是以下任一文件的所有者:

    a) 所有 WordPress 應用程序文件,或...
    b)至少 /wp-admin/includes/file.php 文件

最后的評論

我並不太熱衷於將文件所有權專門應用於 file.php 以解決此問題(至少可以說感覺有點 hacky!)。 在我看來,WordPress 代碼庫傾向於讓我們在與 WordPress 應用程序文件的文件所有者相同的用戶主體下執行 PHP 進程。 我歡迎社區對此發表一些意見。

解決此問題的最簡單方法是將以下 FTP 信息添加到您的wp-config.php

define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');

FTP_BASE是 WordPress 安裝的“base”(ABSPATH) 文件夾的完整路徑FTP_CONTENT_DIR是 WordPress 安裝的 wp-content 文件夾的完整路徑。 FTP_PLUGIN_DIR是 WordPress 安裝的插件文件夾的完整路徑。

作為更大問題的一部分,我們遇到了同樣的問題。 建議的解決方案

define('FS_METHOD', 'direct');

隱藏該窗口,但我們仍然在加載主題和升級等方面遇到問題。它與權限有關,但在我們的案例中,我們通過從php OS 供應商 mod_php移動到更安全的php OS 供應商 FastCGI 應用程序來解決問題。

首先移動到您的安裝文件夾(例如)

cd /Applications/XAMPP/xamppfiles/

現在我們要修改您的 htdocs 目錄:

sudo chown -R daemon htdocs

出現提示時輸入您的 root 密碼,然后使用 chmod 調用完成:

sudo chmod -R g+w htdocs

我面臨同樣的問題! 我已經在 wp-config.php 文件(任何行)中添加了下面的代碼,它現在可以工作了!

define('FS_METHOD', 'direct');

對我來說,為了能夠使用 Ubuntu 在我的本地主機上工作,解決的過程是:(當然,您必須用您的用戶替換 myUser,如果您不知道, whoami會為您展示)

  • 將自己包含在 www-data 組中(無需 sudo 即可訪問和編輯文件):

     sudo usermod -aG www-data myUser
  • 將自己和該組設置為文件所有者:

     sudo chown -R myUser:www-data /var/www/html
  • 為組設置主要權限(組也必須寫):

     sudo find . -type f -exec chmod 664 {} \; sudo find . -type d -exec chmod 775 {} \;
  • 然后在 config.php 上添加這一行

    define('FS_METHOD', 'direct');

正如 Niels 所說,發生這種情況是因為服務器進程用戶無法寫入 Wordpress 文件夾。

但這是很多文章沒有解釋的事情。 它是 php 進程的所有者,而不是 nginx 進程。 如果您嘗試更改 nginx 所有者,它不會解決這個問題。

要解決它,請嘗試運行ps aux以查看哪個用戶擁有 php-fpm 進程。 然后檢查用戶是否與 wordpress 文件夾的所有者相同,或者至少可以寫入。 如果用戶無法寫入,您需要更改文件夾的權限和/或所有權; 或者將兩個用戶(服務器所有者和 wordpress 文件夾所有者)放在一個可以寫入文件夾的公共組中; 或將 php.ini "user" 屬性更改為可以寫入文件夾的用戶。

define('FS_METHOD', 'direct'); 

將此添加到 wp-config.php

如果問題仍然存在,您可以嘗試將插件文件夾的權限設置為 755 或者在 linux 中您可以通過此命令進行設置

Chmod -R 755

更改文件的所有權有效,只有在我退出我的 wordpress 網站並再次登錄之后。 我還重新啟動了 Apache 服務器,但這可能不是必需的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM