当WordPress可以写入文件服务器时,它为什么要请求FTP信息?

时间:2014-05-25 作者:M Miller

我不认为这是重复的,尽管我在这里看到过类似的问题。

我已经添加了我的主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

1 个回复
SO网友:Rarst

Posix 是一个PHP扩展,而不是PHP核心的一部分。WordPress试图在其核心尽可能减少扩展的使用。在Posix one的特定情况下,它有一个非常明显的缺陷,即不能在Windows平台上完全使用。

结束