Laravel项目切换至Ubuntu后本地图片不显示线上正常的原因
Laravel 本地Ubuntu环境图片无法加载故障原因
该问题是跨操作系统迁移开发环境的典型问题,核心诱因有三类:
- 文件系统大小写规则差异:Windows系统使用的NTFS文件系统默认对文件名、路径大小写不敏感,代码中书写的资源路径即使和实际文件的大小写存在偏差,也可以正常匹配到文件;Ubuntu系统使用的ext4等Linux原生文件系统严格区分大小写,路径、文件名任意字符大小写不匹配就会直接返回404,导致图片加载失败,这是Windows切换到Ubuntu环境下该故障的最高发原因。
- 存储目录软链接失效:Laravel默认通过
public/storage软链接映射storage/app/public目录下的公开资源,从Windows迁移到Ubuntu时,原Windows环境生成的软链接为NTFS专属格式,在Linux环境下无法识别,链接断裂后自然无法找到对应图片资源。 - 目录权限配置错误:Ubuntu系统对文件目录权限管控严格,如果
storage目录、public下的资源目录没有给Web运行进程(Nginx/Apache/php artisan serve对应的运行用户)分配可读权限,会直接拦截资源读取请求,线上环境一般提前配置好了规范权限所以可以正常展示。
效果参考
- 本地Ubuntu环境图片加载失败效果:

- 线上生产环境图片正常加载效果:

快速修复方案
- 逐一核对代码中引用图片的路径、文件名大小写,和本地实际存储的文件命名完全对齐,消除大小写偏差。
- 进入项目根目录,删除原有失效的软链接后重新生成Laravel存储软链接,执行命令:
php artisan storage:link - 给资源目录配置正确权限,若使用Nginx/Apache作为Web服务,在项目根目录执行:
若使用sudo chown -R www-data:www-data storage public sudo chmod -R 755 storage publicphp artisan serve启动本地开发服务,将命令中的www-data替换为你当前登录Ubuntu系统的用户名即可。
内容的提问来源于stack exchange,提问作者user18366304
相关产品推荐
相关产品推荐

