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

时间:2016-06-02 作者:alexus

我在跟踪Changing File Permissions « WordPress Codex, 然而,当我尝试更新和/或安装plugin 和/或theme 通过wp-admin, 我得到以下信息:

要执行请求的操作,WordPress需要访问您的web服务器。请输入您的FTP凭据以继续。如果您不记得您的凭据,请与您的web主机联系。

从文件系统级别:

# 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
$ 
我希望能够执行请求的操作(install 和/或update) 通过/wp-admin 无FTP凭据。

我该怎么做?

6 个回复
SO网友:Narendra Solanki

将以下内容添加到wp config。php:

define( \'FS_METHOD\', \'direct\' );
让我知道它是如何为你工作的。

SO网友:Syamraj K

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

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

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

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

SO网友:w00t

尽管将所有权作为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\\u file\\u owner=root
temp\\u file\\u 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\\u file\\u owner与$temp\\u file\\u owner相同,则继续。你的会被抓到在elseif中,根据评论,它不允许删除/创建,只允许更新(我通过在Wordpress中更新插件的代码验证了这一点,并且成功了)。

请注意,我没有仔细查看代码,这只是我的快速解释。我也遇到了同样的问题,一旦我切换了user:group,使得httpd用户也是文件所有者,它就不再提示输入FTP凭据了。

SO网友:Mark Kaplun

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

原因是,如果Web服务器可以覆盖您的代码,那么在其上运行的任何恶意代码也可以覆盖您的代码。风险远远大于不必键入ftp凭据而节省几秒钟的便利性。

SO网友:Charles

虽然这个问题已经不是什么新鲜事了,但我想在这个问题上再加上我的两分钱。

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

Imho与SELinux有关,SELinux阻止WordPress按照自己的意愿完成工作。要解释什么SELinux 以及它的作用。仅供参考,介绍开始于:

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

只需执行3个步骤:

打开终端(或通过SSH访问服务器)添加以下代码行chcon -R -t httpd_sys_content_t /var/www/html/wordpresschcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress无需从服务器重新启动,也无需从任何守护程序重新启动。

我不会说这对每个人都有帮助,但对于那些没有禁用SELinux的人来说,这应该是一种解脱。

干杯

Note: Please adjust to your own needs (meaning path to WordPress)

编辑:确保删除该行define("FS_METHOD", "direct"); 在中使用时wp-config.php 因为当上面的代码行按需要执行时,这绝对是不可能的

SO网友:MarkPraschan

在我的例子中,我通过从GIT切换回FTP模式解决了这个问题。

不再发出警告。

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

相关推荐

Php警告:在第30行为/home/padtvro/public_html/wp-content/themes/claudia/content.php中的Foreach()提供的参数无效

在cpanel错误日志中,WordPress生成此错误:PHP警告:在/home/padtvro/public\\u html/wp-content/themes/claudia/content中为foreach()提供的参数无效。php在线30如果我删除它,它会在6-7小时后再次出现。有什么问题吗?<section id=\"contents\" class=\"clearfix\"><div class=\"row main_content\"><div class=\"