[WordPress]解决Nginx下无法在线更新

之前都是使用Apache部署WordPress倒是没碰到过这个问题,这次迁移服务器和迁移到WordPress写内容,才想起以前为什么用Apache来部署了。

首先,先到管理员后台 / 工具 / 健康(wp-admin/site-health.php) 检测一下(在以下每步操作你都可以完成后进行检测),如果关键问题内包含了“后台更新未能正常工作”且通过“ 所有WordPress文件都可写。”那么就是本篇主要解决目标了,另外如果你也出现以下问题,那么应该也能通过这个解决方案处理了:

  1. 更新时需要填写FTP账号密码
  2. 提示:无法创建目录
  3. 提示:无法写入文件

如果是因为墙的问题(理论应该不会了,WordPress在国内也是有些速度的)就联系下服务商看能不能刷新下服务器IP之类了。

确保打开了直接更新选项

在你的站点根目录的wp-config.php文件内,找到以下这句话

define('FS_METHOD', 'direct');

确保FS_METHOD的常量被定义成这个,且没有被注释。如果没有这句,请在 "require_once ABSPATH . 'wp-settings.php';"前加上即可。

确保问题所在

那么出现这个问题,大部分就是文件权限不够,默认Nginx的权限是:Nobody,然而目录权限肯定不是这个。当然如果你也可以直接设置目录和Nginx同时设置为 root (但不建议这么做)

先确定当前Nginx进程运行用户,在命令行输入:

ps aux | grep nginx

因为我已经修改后的样子了,所以是www-data,如果你没修改可能是Nobody,或者其他用户

然后进入到你的站点目录,通过命令"ll"查看当前运行目录文件属性

如果不一致,可以选择修改Nginx运行用户也可以选择修改当前目录下的文件归属用户。

修改Nginx运行用户:

进入到Nginx配置文件,默认目录为:/etc/nginx/nginx.conf

打开文件修改( vi nginx.conf ),找到user xxxx(当前运行的用户),修改后面的xxxx即可,如果没有这句话则在第一行添加即可。

输入完毕后通过命令,重启Nginx:

 systemctl reload nginx

如果重启后站点出现502,则可能因为:用户不存在,或者用户组没有权限访问那个目录。

修改目录归属用户:

进入到站点工作目录,通过执行

chown -R 用户:用户组 *

执行后即可。

操作完后,到检测健康工具检测一下,如果没问题的话:所有WordPress文件都可写。已经通过了。