技术交流

Nginx + WordPress 媒体库上传图片提示“图像后期处理失败”

建站之初就遇到这个问题,搜寻了好多资料,也添加过 Nginx 配置“client_max_body_size 128m; ”仍未解决,今天总算搞定了。

该问题发生在上传图片时,产生如下错误提示:

错误提示

此时按 F12 调出开发者工具 – 控制台,可以捕捉到明显错误

.../async-upload.php 500 (Internal Server Error)

查看后台 /var/log/nginx/error.log 日志发现报错记录

2020/01/29 00:22:55 [crit] 29895#0: *688 open() "/var/lib/nginx/tmp/client_body/0000000006" failed (13: Permission denied), client: 172.69.34.220, server: ideajayve.club, request: "POST /wp-admin/async-upload.php HTTP/1.1", host: "ideajayve.club", referrer: "http://158.247.196.28/wp-admin/media-new.php"

一个显而易见的错误:Nginx 在打开上述路径时遇到 (13: Permission denied) 错误,因为 Nginx 权限不足。

既然是权限问题,查看 Nginx 所属用户和用户组

ps aux | grep "nginx: worker process" | awk '{print $1}'

返回结果

www
root

那么访问 /var/lib/nginx/tmp/client_body/0000000006 这个目录需要什么权限?

执行命令查看该目录的权限

sudo ls -al /var/lib/nginx/

返回结果

total 12
drwxrwx---.  3 nginx root 4096 Oct  7 21:17 .
drwxr-xr-x. 48 root  root 4096 Jan 27 15:08 ..
drwxrwx---.  7 nginx root 4096 Oct  7 21:17 tmp

很明显这个 nginx 是默认用户,而我建站之初设立了独立用户 www,这就导致了日志中的权限拒绝错误。

执行命令修改目录权限

sudo chown -R www:www /var/lib/nginx/

再次检查目录权限

sudo ls -al /var/lib/nginx/

返回结果

total 12
drwxrwx---.  3 www  www  4096 Oct  7 21:17 .
drwxr-xr-x. 48 root root 4096 Jan 27 15:08 ..
drwxrwx---.  7 www  www  4096 Oct  7 21:17 tmp

很好,现在权限一致了,上传一张图片试试看。

上传成功

附图可见两次失败,修改过权限后第三次上传就正常了。

问题解决。

WordPress论坛的 @guygolan一篇帖子下面的回复提到 F12 查看控制台的方法,正巧今天我看到了这篇,问题才得到了解决。

追随着自己的感觉。

发表评论

电子邮件地址不会被公开。 必填项已用*标注