LECMS图片上传不显示怎么办

juming
juming 初级会员超兽战士
发布于 2026-10-08 04:05 ·2 浏览 ·0 回复

照着下面 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 权限改成公共读
版权声明:本文来自 GJ站长论坛《LECMS图片上传不显示怎么办》
原文链接:https://www.gj0.com/thread-730.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~