Laravel 5.8如何显示public目录图片?执行storage:link仍无法展示怎么办
问题排查与解决步骤
默认执行php artisan storage:link生成的软链接,只会将项目根目录下的public/storage指向storage/app/public路径,你的图片存储在storage/app/uploads,不在默认映射的路径范围内,这是最核心的问题。
方案1:调整图片存储路径(推荐)
- 修改文件上传逻辑,将上传的图片存储到
storage/app/public/uploads目录下 - 确保
$post->image字段存储的是类似uploads/xxx.jpg的相对路径,你现有的Blade代码无需修改即可正常访问
方案2:自定义软链接映射
如果你需要保留storage/app/uploads的存储路径,可手动修改软链接配置:
- 打开项目
config/filesystems.php文件,找到links配置项,新增一行映射规则:
'links' => [ public_path('storage') => storage_path('app/public'), public_path('uploads') => storage_path('app/uploads'), ],
- 重新执行
php artisan storage:link命令生成新的软链接 - 修改Blade模板里的图片路径为:
<img class="w-100" src="/uploads/{{ $post->image }}">
其他常见问题排查
- 检查目录权限:Linux环境下需给storage目录设置web服务器可访问的权限,可执行
chmod -R 755 storage、chown -R www-data:www-data storage(根据实际运行的web服务用户调整用户组参数) - 检查路径拼接是否正确:确认
$post->image没有多余的斜杠前缀,避免拼接后出现/storage//uploads/xxx.jpg这类错误路径 - 本地开发环境如果用
php artisan serve启动的服务,修改软链接后重启服务即可生效 - Apache服务需确认public目录下的
.htaccess文件存在,重写规则正常开启,没有屏蔽静态资源访问 - 直接在浏览器地址栏输入完整的图片路径测试,返回404说明路径映射错误,返回403说明权限配置错误
内容的提问来源于stack exchange,提问作者codeninja
相关产品推荐
相关产品推荐

