欢迎访问芦艺网!

解决WordPress在Chrome中出现net::ERR_INCOMPLETE_CHUNKED_ENCODING错误

今天更新WordPress博客系统的时候,遇到一个容易因为服务器部署时疏漏而导致问题,并且在谷歌浏览器Chrome中,控制台的错误提示是: net::ERR_INCOMPLETE_CHUNKED_ENCODING。下面我们来看看是怎么回事呢。

今天打开博客系统后台的时候,发现WordPress已经发布了5.2版,我目前使用的是WP5.1版,于是点击控制面板的更新按钮,跳转到更新页面。发现Yoast SEO插件也有更新版本,并且已经兼容了WP5.2,于是也将Yoast SEO插件更新了。更新貌似顺利完成,这时我打开SEO插件的常规设置页,这个时候页面居然全部错乱了,打开控制台发现JS和CSS文件均无法正常加载,Chrome的控制台报错均是net::ERR_INCOMPLETE_CHUNKED_ENCODING

貌似升级过程中,没有看到有什么错误提示呀。难道是WP升级导致代码冲突了?SSH登录博客系统的服务器,进入PHP-FPM和NGINX的错误日志目录查看错误日志,均未发现有相关错误。这就有点神奇了。

决定在本地的开发环境看看是否能够重现错误。先在服务器上把代码通过git提交,然后合并到master分支。在本地的开发环境拉取最新代码后,运行博客系统的后台,打开SEO插件的常规设置页,一切正常!!!是的,没错!本地开发环境一切正常!匪夷所思!

那很可能就是环境差异了。

先上Google/百度搜索看看是否有类似的问题和解答,应该不会只有我一个人遇到这个问题!Google搜索了一圈,出现这个错误的情况五花八门,但是都没有找到我这个可能的原因。可能是自己英文太菜,于是上百度搜索看看。居然真的在一篇文章里看到:

当nginx作为反向代理服务器时,输出的代理文件大小超过配置项 proxy_temp_file_write_size 所设置的值时,nginx 会将文件写入到配置项 proxy_temp_path 所设置的临时目录下。但是当前运行 nginx 的用户没有 proxy_temp_path 的读写权限,则文件写入就会失败。结果就是导致 nginx 返回给 chrome浏览器的内容未空,即无任何输出,从而出现net::ERR_INCOMPLETE_CHUNKED_ENCODING 的错误。

很有可能就是这个问题了,于是检查我的 nginx 的配置,发现我并没有设置 proxy_temp_pathproxy_temp_file_write_size 两个配置项,那就应该还是默认配置。

// 查看 nginx 的默认临时目录,确认权限
cd /var/lib/
ll

发现确实权限有问题,因为我之前配置nginx是以 www 用户来执行的。看下方截图,可以知道这里临时目录 nginx 的所有者用户和用户组是 nginx:nginx ,并且权限为仅所有者可读写执行。所以www用户是无法读写文件的。

# 修正nginx临时文件目录的的所有者为 www:www
chown -R www:www /var/lib/nginx

临时目录修改所有者之后完成后,如上图截图所示。

其实 nginx 的临时目录不仅用于反向带来,还是临时上传文件的存放路径,也就是说以上权限问题还会导致 nginx 服务器上的相关应用/网站无法上传文件,因为上传的文件没有办法写入到临时目录。那么为什么我之前没有发现呢?那是因为最近刚把博客系统从给另一个服务商那里迁移到阿里云,博客也很久没有更新,也没有发布新的文章,所以就没有发现。还是大意了啊~所以还是不够细心,迁移完成没有仔细检查。大意了!大意了!

除了以上修改临时目录所有者的办法,其实也可以直接在nginx的主配置文件 nginx.conf 中添加临时目录的配置项,并以www用户的身份登录服务器创建相应的临时目录。

到此,WordPress在谷歌浏览器Chrome中出现net::ERR_INCOMPLETE_CHUNKED_ENCODING错误的问题就得到了解决。而其实这个问题和WordPress的关系不大,完全是nginx服务器配置和权限的问题。其它应用/系统如果也是使用nginx作为服务器或代理服务器,遇到类似的错误,也可以做以上同样的排查。

发表评论

关闭菜单