网站提示有 WordPress 更新可用,但在线更新时却提示:要执行请求的操作,WordPress需要访问您网页服务器的权限。请输入您的 FTP 登录凭据以继续。
我输入 FTP 登录用户名和密码,网页无响应。我猜测会否主机名错误了,就填写了 FTP 地址,仍然是错误的。
网络搜索了一下,有网友遇到相同问题,给出的解决办法是,在 WordPress 配置文件 wp-config.php 中,加上如下代码:
define("FS_METHOD","direct");
define("FS_CHMOD_DIR",0755);
define("FS_CHMOD_FILE",0644);
wp-config.php 文件在 WordPress 安装目录下,不同的服务器空间,FTP 的根目录可能位置会不同。
有些网友添加代码后就能解决问题,但我的仍然不行。提示:
由于某些文件无法被复制,更新无法进行。此问题通常是由于文件权限不一致造成的。
再请教网络,说是因为网站文件的所有者和网站文件夹的所有者不同导致的。仔细看了一下网站文件夹所有者和用户组是 www,而网站文件所有者和所在用户组是 root。
因为 WordPress 安装更新的时候要向 wp-content 这个目录写文件,如果这个目录文件属于的是 root 用户,而运行服务器的用户是 www 用户,这个用户只有读的权限,自然就无法写入。
我用宝塔面板查看了一下,发现更新所在的文件夹 wp-content 的所有者是 www,而文件的所有者是 root 。
网友建议在终端里写如下更改命令:
chown -R www www/wwwroot/hscd.org/wp-content
以上 www/wwwroot/hscd.org/wp-content,请根据你网站的实际路径更改一下。即把文件夹所有者 root 修改成 www 。
其实在宝塔面板中修改权限会很方便,点击文件夹右侧的“权限”链接,在设置界面修改所有者为“www",并“应用到子目录”,确定保存即可。
通过修改文件夹所有者权限,在线更新升级成功。
你这个似乎改反了,只要wp所有权限都是www所有,就不需要添加上面那三个define了。
@不亦乐乎 我是添加了那三个define还不行,所以又改了权限为root,才正常的。
@不亦乐乎 我觉得你是对的,改成 root 后,站点健康检测,会显示文件不能写入,我后面又全改成 wwww 权限了,不加三个 define ,会显示需要 FTP 更新的信息。
Linux好多权限问题看不懂啊
@MrHe 我只知道起作用了,但不知道为什么会这样。