WordPress要求我的FTP凭据来安装插件

时间:2013-07-29 11:17:59

标签: wordpress ftp

我在本地系统中安装了一个WordPress博客。但是当我尝试从管理员添加插件时,它会要求FTP访问。我需要为WordPress配置什么才能在没有FTP的情况下上传?

14 个答案:

答案 0 :(得分:265)

尝试在wp-config.php中添加代码:

define('FS_METHOD', 'direct');

答案 1 :(得分:32)

如果您使用的是Ubuntu。

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

答案 2 :(得分:16)

“每当您使用WordPress控制面板自动安装,升级或删除插件时,WordPress都必须对文件系统上的文件进行更改。

在进行任何更改之前,WordPress首先检查它是否有权直接操作文件系统。

如果WordPress没有直接修改文件系统的必要权限,系统会要求您提供FTP凭据,以便WordPress可以尝试通过FTP执行所需的操作。“

解决方案: 为了找出您的apache实例正在运行的用户,请使用以下内容创建一个测试脚本:

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

对我来说,它是守护进程,而不是www-data。然后,通过以下方式修复权限:

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

答案 3 :(得分:10)

在OSX上,我使用了以下内容,它起作用了:

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

_www是PHP在Mac上运行的用户。

(你可能还需要chmod一些文件夹。我先做了那个并没有解决它。直到我做了chown命令它才有效,所以我&#39;我不确定它是单独的chown命令,还是chmod和chown的组合。)

答案 4 :(得分:9)

我将wordpress文件夹的所有权递归更改为www-data并重新启动了apache。

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

它就像一个魅力!

答案 5 :(得分:7)

From the first hit on Google

  

当WordPress无法访问文件时,会询问您的FTP凭据   直。这通常是由作为apache用户运行的PHP引起的   (mod_php或CGI)而不是拥有WordPress文件的用户。

在大多数共享托管环境中这是很正常的 - 文件存储为用户,Apache以用户apachehttpd运行。这实际上是一个很好的安全预防措施,因此漏洞和黑客无法修改托管文件。你可以通过将所有WP文件设置为777安全性来避免这种情况,但这意味着没有安全性,所以我强烈建议不要这样做。只需使用FTP,这是一个有充分理由的自动建议的解决方法。

答案 6 :(得分:3)

首先转到您的安装文件夹(例如)

cd /Applications/XAMPP/xamppfiles/

现在我们要修改你的htdocs目录:

sudo chown -R daemon htdocs

在提示时输入您的root密码,然后通过chmod调用完成:

sudo chmod -R g+w htdocs

答案 7 :(得分:3)

作为更大问题的一部分,我们遇到了同样的问题。

的建议解决方案
define('FS_METHOD', 'direct');

隐藏了那个窗口但是我们仍然遇到加载主题和升级等问题。它与权限相关但是在我们的案例中我们通过从 php OS vendor mod_php 转移到更安全的问题来解决问题 php OS供应商FastCGI应用程序

答案 8 :(得分:3)

我按照here概述的步骤在Ubuntu 14.04上本地安装了WordPress并运行:

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

解决了下载插件的问题。我在这里留下这篇文章的唯一原因是因为当我搜索我的问题时,这是最初的结果之一,它引导我解决了我的问题。

希望这个对任何人都有帮助!

答案 9 :(得分:2)

解决此问题的最简单方法是将以下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安装的“基础”(ABSPATH)文件夹的完整路径 FTP_CONTENT_DIR 是WordPress安装的wp-content文件夹的完整路径。 FTP_PLUGIN_DIR 是WordPress安装的plugins文件夹的完整路径。

答案 10 :(得分:1)

如Niels所述,这是因为服务器进程用户无法写入Wordpress文件夹。

但是很多文章都没有解释过。它是php进程的所有者,而不是nginx进程。如果您尝试更改nginx所有者,则无法解决此问题。

要解决此问题,请尝试运行ps aux以查看哪个用户拥有php-fpm进程。然后检查该用户是否与wordpress文件夹的所有者是同一用户,或者至少可以写入该用户。如果用户无法写信,则您需要更改文件夹的权限和/或所有权;或者将两个用户(服务器所有者和wordpress文件夹所有者)放在可以写入文件夹的公共组中;或更改php.ini&#34; user&#34;属性可以写入文件夹的用户。

答案 11 :(得分:1)

我面临着同样的问题! 我已经在wp-config.php文件中的任何行中添加了以下代码,并且现在可以正常工作!

define('FS_METHOD', 'direct');

答案 12 :(得分:1)

如果在插件安装期间,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

答案 13 :(得分:0)

对此问题有很多类似的回答,但是都没有完全找到根本原因。 Sebastian Schmid's对原始帖子的评论触及了该评论,但并不完整。这是我自2018年11月6日起的看法:

根本原因

当您尝试通过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来解决此问题(至少可以说有点怪癖!)。在我看来,此时WordPress代码库倾向于让我们在与WordPress应用程序文件的文件所有者相同的用户主体下执行PHP流程。我欢迎社区对此发表一些评论。