【问题标题】:WordPress needs the FTP credentials to update pluginsWordPress 需要 FTP 凭据来更新插件
【发布时间】:2015-06-06 23:03:01
【问题描述】:

我在 AWS EC2 (Ubuntu) 上托管 WordPress,并在更新插件时遇到以下错误:

要执行请求的操作,WordPress 需要访问您的网络服务器。请输入您的 FTP 凭据以继续。如果您不记得您的凭据,您应该联系您的网络托管服务商。

rwx 权限已授予用户www-data。这就是我所做的。

<!– language: lang-bash –>

# Add a new group
groupadd www-pub

# Add the user `www-data` to the group 'www-pub'
usermod -a -G www-pub www-data

# Change the ownership of '/var/www/' to 'ubuntu:www-pub'
chown -R ubuntu:www-pub /var/www

# Change the permissions of all the folders to 2775
find /var/www -type d -exec chmod 2775 {} +

# Change the permissions of all the files to 0664
find /var/www -type f -exec chmod 0664 {} +

如您所见,www-data 拥有所有正确的权限,但我仍然需要输入 FTP 凭据。是什么原因,我该如何解决?

【问题讨论】:

  • 我发现最好的方法是使用 Google Chrome 或 Firefox 下载插件:LastPass,它会为您填写登录名/密码。这就是你要找的吗?
  • @Leptonator,没有。 wordpress 需要使用 password 登录 ftp,但 AWS EC2 为我提供了 SSH-keys。我知道为 ftp 创建密码是一种解决方案,但我认为这种方式不是一个好方法。
  • 您是否尝试将define('FS_METHOD', 'direct'); 添加到您的 wp-config.php 文件中?
  • @Brandon 是的,我把它放在wp-config.php 的末尾,但它不起作用。正如@Corlax 建议的那样,将其放在数据库信息下方,现在它可以完美运行了。

标签: wordpress amazon-web-services amazon-ec2 ftp


【解决方案1】:

有一个简单的解决方法。只需编辑文件 wp-config.php 并将此代码写入其中。

先试试这个:

define('FS_METHOD', 'direct');

注意:不要将此添加到文件末尾,而是在文件顶部的数据库信息下方。

define('FTP_USER', 'username'); // Your FTP username
define('FTP_PASS', 'password'); // Your FTP password
define('FTP_HOST', 'ftp.example.org:21'); // Your FTP URL:Your FTP port

也请阅读this blog post

【讨论】:

  • 谢谢,它对我有用。几周前,我将define('FS_METHOD', 'direct'); 放在了wp-config.php 文件的末尾,这不起作用。
  • 我认为这个答案可以解决。 mtinsley 提供的将文件所有权更改为 www-data:www-data 的答案解决了根本问题。
【解决方案2】:

这意味着 WordPress 在其安装的文件夹中进行更改的权限有限。

为了解决这个问题,您需要做的就是提供必要的权限。

通过 SSH 连接到服务器后,在终端中运行以下命令 PuTTY 或命令行提示符。

sudo chown -R apache:apache /var/www/html

查看以下文章了解完整详情 (Syam | MMWYS.Online):

How to fix the infamous issue of WordPress asking for FTP Credentials for Installing Plugins / Themes?

【讨论】:

【解决方案3】:

我怀疑this answer 解释了它为什么不起作用。

我见过的大多数 Ubuntu Web 服务器的设置与您所做的有点不同。我不确定你这样做的原因是什么,但如果你想让事情变得简单,你只需将所有文件的所有者和组设置为www-data

chown -R www-data:www-data /var/www

这将授予 Web 服务器对 Web 根目录中所有文件的完全访问权限。如果您需要授予任何其他用户访问这些文件的权限,只需将他们添加到 www-data 组即可。

usermod -a -G www-data someuser

您设置的文件权限对我来说看起来不错。

#Change the permissions of all the folders to 2775
find /var/www -type d -exec chmod 2775 {} +

#Change the permissions of all the files to 0664
find /var/www -type f -exec chmod 0664 {} +

作为参考,this answer 解释了 chmod 2775(特别是 2)的含义。

本质上,它会导致任何新文件继承目录的组。 www-data 在这种情况下。这意味着 Web 服务器可以访问其他用户创建的任何文件,而无需更改这些文件的所有权或权限。

【讨论】:

  • 你提到的答案When adding a user to a new group, that won't be applied in any currently-running processes, only new ones. You need to log out and then log back in.,无法解释,因为我重启了apache2。
【解决方案4】:

您需要为您的项目分配一个用户。

对于 NGINX 服务器:

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

对于 Apache 服务器:

sudo chown apache:apache -R <your_wordpress_dir>

并更改目录权限:

sudo chmod 755 -R <your_wordpress_dir> 

【讨论】:

    【解决方案5】:

    wp-config.php 文件中的define( 'WP_DEBUG', true ); 之后添加这行代码define( 'FS_METHOD', 'direct' );

    所以应该是这样的:

    define( 'WP_DEBUG', true );
    
    /* Add any custom values between this line and the "stop editing" line. */
    
    define( 'FS_METHOD', 'direct' );
    
    /* That's all, stop editing! Happy publishing. */
    

    保存文件并重试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-20
      • 2018-07-11
      • 2013-07-29
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多