LECMS图片上传不显示怎么办
照着下面 6 步走一遍,你能在十几分钟内判断出 LECMS 图片上传后不显示是哪一类问题——是权限、路径、伪静态、混合内容还是 OSS 配置,并把它修好。
第一步:先用 F12 分清是哪一类故障
上传后图片不显示,先别急着改配置,打开前台那个「破图」的页面,按 F12 打开开发者工具,切到 Network(网络) 面板,按 Ctrl+F5 强刷一次,在筛选框里输入 uploads(或者点面板上的 Img 按钮只看图片请求)。
看那条图片请求的 Status(状态码):
- 404:文件根本没写进去,或者访问路径不对 → 看第二步、第三步
- 403:文件在,但服务器不让访问 → 看第二步
- 200 但图片是空白:文件写进去了但是 0 字节 → 看第五步
- 请求根本没出现,Console 里有红字:多半是混合内容被拦 → 看第四步
记下状态码,后面按对应分支处理。
第二步:检查 uploads 目录的属主和权限
这一步要确认「PHP 进程有没有权限往上传目录写文件」,写完权限后 403/上传失败类的问题会消失。
LECMS 的上传目录通常在站点根目录的 public/uploads/ 下(部分版本是站点根目录的 /uploads/),具体以你后台 系统设置 → 附件设置 里填的上传路径为准。用 SSH 或宝塔面板确认:
chown -R www:www /www/wwwroot/你的站点/public/uploads
chmod -R 755 /www/wwwroot/你的站点/public/uploads
宝塔面板的操作路径是:**文件 → 进入站点目录 → 勾选 uploads → 权限 → 权限设为 755,所有者设为 www → 确定**。
注意:如果你的 PHP 是以
nobody或apache用户跑的(比如某些 Apache 环境),属主就要跟着改成对应账号,不能照抄www。用ps aux | grep php-fpm看一眼实际运行用户再改。
第三步:确认站点根目录指向 public,伪静态没拦截 uploads
这一步解决 404。LECMS 基于 ThinkPHP,入口文件在 public/index.php,站点根目录必须指向 public 目录,而不是项目根目录。如果你把根目录指到了项目外层,图片的真实地址就变成了 https://域名/public/uploads/xxx.jpg,而页面里引用的是 https://域名/uploads/xxx.jpg,自然 404。
同时检查伪静态规则。宝塔面板 网站 → 设置 → 伪静态,选 thinkphp 模板即可。如果你用的是自己写的这种规则:
rewrite ^(.*)$ /index.php?s=$1 last;
它会把 uploads/ 下的图片请求也转发给 PHP,图片就全 404 了。正确写法是让静态文件优先:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
第四步:检查「附件 URL 地址」有没有踩 HTTPS 混合内容
这一步解决「图片请求压根没发出去、Console 报 Mixed Content」的问题。进入后台 系统设置 → 附件设置,看「附件 URL 地址」(有的版本叫「附件域名」或「站点域名」)这一栏。
如果你的站点是 https:// 访问的,而这里填的是 http://www.你的域名.com,浏览器会直接拦截这条图片请求,前台就是破图。把它改成 https:// 开头,保存后到后台 工具 → 清除缓存 清一次,再强刷前台。
注意:清完缓存要按
Ctrl+F5强制刷新,普通 F5 会继续用本地缓存的旧地址。
第五步:检查 PHP 扩展和上传大小限制
这一步解决「图片是 0 字节」或者「缩略图生成失败」。打开宝塔面板 软件商店 → 已安装 → PHP-7.4(你实际用的版本)→ 设置:
- 禁用函数 里确认
putenv、symlink没被禁(这两个常被一键禁用,会影响图片处理) - 配置修改 里把
upload_max_filesize改成20M,post_max_size改成20M - 安装扩展 里确认
fileinfo、gd(或imagick)已安装
改完必须重启 PHP 服务才生效。
注意:
post_max_size一定要大于等于upload_max_filesize,否则表单提交会整个失败,表现为「点了上传没反应」。
第六步:如果用了 OSS/七牛,检查 Bucket 读写权限
后台开了对象存储的话,图片其实是传到云上的。进阿里云 OSS 控制台 → 找到对应 Bucket → 权限管理 → 读写权限,改成 公共读。七牛则在 空间设置 → 访问控制 里设为公开。私有读的 Bucket 前台是取不到图的,必须在后端生成签名 URL 才行。
小结
- 先用 F12 看图片请求的状态码,404 查路径、403 查权限、Console 报错查混合内容
- 上传目录属主要跟 PHP 运行用户一致,权限 755,别照抄网上的
www - 站点根目录必须指向
public,伪静态要保证静态文件优先于index.php - HTTPS 站点下,后台「附件 URL 地址」也必须是
https://开头 - 图片 0 字节多半是
gd/fileinfo扩展缺失或post_max_size太小,改完记得重启 PHP - 用了 OSS/七牛,先把 Bucket 权限改成公共读
原文链接:https://www.gj0.com/thread-730.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。