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凭据。我该怎么办?
#1 楼
将以下内容添加到wp-config.php:define( 'FS_METHOD', 'direct' );
让我知道它如何为您工作。
评论
wordpress.stackexchange.com/questions/189554/…
– alexus
17年6月22日在15:29
为我工作,除非您在文件系统中具有错误的权限。顺便说一句,我在wp-config.php的最顶部添加了它
– Toskan
18-09-28在18:12
使用此方法之前,请务必阅读Alexus链接到的帖子。此方法肯定有效(它为我解决了问题),但绝对不应在共享主机环境或任何有风险的环境中使用此方法,因为这样做可能会损害安全性。
–JamesHoux
19年5月18日在15:51
添加此内容后,我收到以下错误消息:更新失败:无法安装更新,因为我们将无法复制某些文件。这通常是由于文件权限不一致造成的。
– Sabbir
3月18日下午3:57
对于将整个站点从本地主机迁移到实时服务器的用户来说,这可能是危险的。我希望您使用@Syamraj K的修改文件权限的方法,或者在在线迁移之前将其从wp-config.php中删除
–Cedric Ipkiss
11月10日下午1:48
#2 楼
这意味着WordPress在安装文件夹中进行更改的权限有限。为了解决此问题,您所需要做的就是为其提供必要的权限。
之后,在终端/腻子/命令行提示符中运行以下命令通过SSH连接到您的服务器:
sudo chown -R apache:apache /var/www/html
查看本文以获取全部详细信息。
评论
权限很好,请重新阅读我的问题)
– alexus
16年8月5日在18:55
chown:无效用户:‘apache:apache’
– Numediaweb
18年2月2日在9:46
记住,Apache可以是使用不同Linux版本的不同用户。因此,您可以尝试使用组
– MontyThreeCard
19年1月25日在16:09
在找到正确的用户名后,此方法非常有用(另请参见列出所有用户的命令)
–顶级大师
1月8日11:38
如果要在OSX上使用它,请使用_www:_www(莫哈韦沙漠,不知道其他版本的含义)
– Larzan
5月6日14:08
#3 楼
即使所有权为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 = root
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年8月30日在3:45
有趣的发现,我会调查一下...谢谢我+1)
– alexus
19/12/16在17:07
#4 楼
这不是一个直接的答案,但是可能不得不说-这是一个应避免解决的问题,除非您正在谈论本地开发,在这种情况下,您可以将权限设置为777。原因是如果网络服务器可以覆盖您的代码,那么在它上面运行的任何恶意代码也将能够做到这一点。风险要比不必键入ftp凭据节省几秒钟的便利大得多。
#5 楼
尽管问题不再是新问题了,但我也想在此问题上加上我的两分钱。很多人在其VPS服务器上都安装了Centos(7),下面的代码行可以解决他们的问题。
Imho与SELinux息息相关,SELinux阻止WordPress按要求完成其工作。到目前为止,将解释SELinux是什么以及它做什么。仅供参考,介绍开始于:
安全性增强的Linux(SELinux)是在内核中实现的强制性访问控制(MAC)安全性机制。
只需执行以下3个步骤:
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
中使用过,因为当上述代码行按需进行时,这绝对是不可行的事情。#6 楼
就我而言,我通过从GIT切换回FTP模式解决了这一问题。不再发出警告。
也许对其他人也有帮助。
评论
这是本地主机安装吗?如果是这样,请参阅:wordpress.stackexchange.com/questions/19649/…@GregMcMullen不,这不是本地主机安装,并且您评论的链接的“已接受”答案是递归地将wordpress目录的所有权更改为任何人-这对我不起作用,因为httpd作为apache运行。
@alexus看来您的文件目前归root.apache所有。您尝试过apache.apache而不是没人吗?
@timMalone将文件/目录设置为apache.apache或root.apache没什么区别,只要httpd作为apache运行,并且apache的uid是apache gid的组的一部分,它们都是一样的,因为我的权限设置为g + w。
@alexus好的,还可以尝试-在wp-config.php(codex.wordpress.org/…)中将FS_METHOD设置为“ direct”