我不认为这是重复的,尽管我在这里看到过类似的问题。
我已经添加了我的主SSH/FTP用户和nobody
发送给名为webserver
, 然后我跑了一个chown -R .webserver /var/www
这样FTP和Apache都可以写入文件系统。
我知道PHP可以写入服务器——我可以使用媒体库上传图像。然而,当我去安装插件时,它会提示我输入FTP凭据。
如果我添加define(\'FS_METHOD\', \'direct\');
至wp配置。php,这就消失了,插件安装没有问题。
但为什么会发生这种情况?根据Codex,首选的方法是直接操作,并且可以直接操作文件系统。那么,是什么让它提示FTP呢?
谢谢
EDIT:
我查看了源代码,了解它如何确定要使用的文件系统方法(wp-admin/includes/file.php
, 第933行),我发现它可以创建测试文件,但所有者与处理器的UID不匹配。查看PHP手册getmyuid()
和fileowner($file)
, 看来,与其使用getmyuid()
, 它应该使用posix_getuid()
. 你知道为什么开发者会使用前者吗?
EDIT 2:
WordPress bug tracker中指出:https://core.trac.wordpress.org/ticket/10205