要执行请求的操作,wordpress需要访问您的Web服务器。请输入您的ftp


28

我正在关注更改文件权限«WordPress Codex,但是当我尝试更新和/或安装plugin和/或theme通过时wp-admin,我正在关注:

要执行请求的操作,WordPress需要访问您的Web服务器。请输入您的FTP凭据以继续。如果您不记得自己的凭据,则应联系您的虚拟主机。

从文件系统级别:

# ls -ld wp-content/ wp-content/plugins/ wp-content/themes/
drwxrwxr-x.  6 root apache 4096 Jun  2 12:01 wp-content/
drwxrwxr-x. 28 root apache 4096 Jun  2 00:00 wp-content/plugins/
drwxrwxr-x. 11 root apache 4096 May 11 16:34 wp-content/themes/
# 

httpd运行方式为apache

$ ps auxw | grep httpd
root     20158  0.0  0.1 533080 26192 ?        Ss   15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20233  0.0  0.2 612608 34908 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20234  0.0  0.2 538772 46904 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20235  0.0  0.1 536832 24268 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20236  0.0  0.2 626272 35640 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20237  0.0  0.0 535296  9592 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20322  0.0  0.1 537088 26620 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20380  0.0  0.2 626060 33816 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20429  0.0  0.1 538216 29184 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20447  0.0  0.2 629380 43180 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20448  0.0  0.2 626172 35224 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
alexus   24073  0.0  0.0 112652   972 pts/9    R+   15:13   0:00 grep --color=auto httpd
$ 

我希望能够在没有 FTP凭据的情况下执行请求的操作(install和/或update)。/wp-admin

我怎样才能做到这一点?


1
这是本地主机安装吗?如果是这样,请参阅:wordpress.stackexchange.com/questions/19649/...
格雷格·麦克马伦

1
@GregMcMullen不,这不是本地主机安装,并且您评论的链接的“接受”答案是递归地将wordpress目录的所有权更改为nobody-由于httpd运行方式对我来说不起作用apache
alexus

@alexus看来您的文件目前由root.apache拥有。您是否尝试过apache.apache而不是没人?
蒂姆·马隆

@TimMalone设置文件/目录apache.apacheroot.apache将没有任何区别,只要httpd运行作为apache,和apacheuid是部分apache gid的组,它是完全一样的,因为我的权限设置为g+w
alexus

@alexus好的,还可以尝试-在wp-config.php(codex.wordpress.org/…)中将FS_METHOD设置为“ direct”
蒂姆·马隆

Answers:


52

将以下内容添加到wp-config.php中:

define( 'FS_METHOD', 'direct' );

让我知道它如何为您服务。



为我工作,除非您在文件系统中具有错误的权限。顺便说一句,我在wp-config.php的最顶部添加了它
Toskan '18

使用此方法之前,请务必阅读Alexus链接到的帖子。此方法肯定有效(它为我解决了问题),但绝对不应该在共享主机环境或任何有风险的环境中使用此方法,因为这样做可能会损害安全性。
JamesHoux

16

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

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

通过SSH连接到服务器后,在终端/腻子/命令行提示符中运行以下命令:

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

查看这篇文章以获取全部详细信息。


权限很好,请重新阅读我的问题)
alexus '16

3
chown:无效的用户:'apache:
apache'– numediaweb

2
记住,Apache可以是使用不同风格的Linux的不同用户。因此,您可以尝试使用组<username>并查看是否出错,因为Apache的用户和组通常是相同的。然后使用正确的用户。在Ubuntu中,最常见的是用于生成Apache文件的“ www-data:www-data”或“ www:www”。
MontyThreeCard

2

即使拥有所有权(root:apache具有权限775)和以httpd作为身份运行是完全正确的apache,Wordpress也不喜欢这样。它希望所有者是apache,按照wp-admin/includes/file.php

    // Attempt to determine the file owner of the WordPress files, and that of newly created files
   $wp_file_owner = $temp_file_owner = false;
   if ( function_exists('fileowner') ) {
      $wp_file_owner = @fileowner( __FILE__ );
      $temp_file_owner = @fileowner( $temp_file_name );
  }

您将是:
wp_file_owner =根temp_file_owner
= apache

if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
    // WordPress is creating files as the same owner as the WordPress files,
    // this means it's safe to modify & create new files via PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files
    // safely in this directory. This mode doesn't create new files, only alter existing ones.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

如果$ wp_file_owner与$ temp_file_owner相同,则继续。您的将陷入elseif中,根据注释,该elseif不允许删除/创建,而只能进行更新(我通过在Wordpress中更新插件的代码来验证了这一点,并且有效)。

请注意,我没有广泛浏览代码,这只是我的快速解释。我遇到了同样的问题,切换了user:group以便httpd用户也是文件所有者后,它不再提示输入FTP凭据。


是的,将所有者改为www-data为我工作。有趣的WordPress!
ankush981 '18

1

这不是一个直接的答案,但是可能不得不说-这是您应该避免解决的一个问题,除非您正在谈论本地开发,在这种情况下,您可以将权限设置为777。

原因是,如果Web服务器可以覆盖您的代码,则在它上面运行的任何恶意代码也将能够做到这一点。风险要比不必键入ftp凭据节省几秒钟的便​​利大得多。


0

尽管问题不再是新的了,但我还是想在这个问题上加我的两分钱。

许多ppl的VPS服务器上都有Centos(7),下面的代码行可以解决他们的问题。

Imho与SELinux息息相关,SELinux阻止WordPress按要求工作。到目前为止,将解释SELinux是什么以及它做什么。仅供参考,介绍从以下内容开始:

增强安全性的Linux(SELinux)是在内核中实现的强制性访问控制(MAC)安全性机制。

仅需遵循以下三个步骤:

  • 1打开终端(或通过SSH访问服务器)
  • 2添加以下代码行 chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3添加第二行代码 chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

无需从服务器重新引导或从任何所需的守护程序重新引导。

我不会说它对所有人都有帮助,但是对于那些没有禁用SELinux的人来说,应该可以放心了。

干杯

注意:请根据自己的需要进行调整(意味着WordPress的路径)

编辑:请确保在使用该行时将其删除define("FS_METHOD", "direct");wp-config.php因为当上述代码行按需进行时,这绝对是不可行的。


0

就我而言,我通过从GIT切换回FTP模式解决了这一问题。

没有更多警告。

也许这也会对其他人有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.