You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.5+PHP上传图片无法在浏览器显示问题求助

解决Laravel 5.5上传图片无法显示(404未找到)的问题

我来帮你排查这个Laravel 5.5里上传图片无法在浏览器显示的问题,这是本地存储配置里常见的几个坑,你可以一步步核对:

  • 补全filesystems.php的public磁盘配置
    你给出的配置里public磁盘的url项不完整,Laravel需要明确public磁盘的访问URL,同时要设置文件可见性为public,完整配置应该是这样:

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],
    

    这里的url会结合你.env里的APP_URL生成可访问的路径,visibility确保文件能被公开访问。

  • 创建storage到public目录的软链接
    这是最容易忽略的一步!Laravel的storage/app/public目录不在web根目录下,所以需要通过软链接把它映射到public/storage,这样浏览器才能访问到里面的文件。
    在项目根目录执行Artisan命令:

    php artisan storage:link
    

    如果是没有Artisan权限的生产环境(比如共享主机),可以手动创建软链接:

    • Linux/macOS:ln -s /你的项目路径/storage/app/public /你的项目路径/public/storage
    • Windows(管理员命令行):mklink /D "C:\你的项目路径\public\storage" "C:\你的项目路径\storage\app\public"
  • 确认文件上传到了public磁盘
    上传文件时要指定使用public磁盘,而不是默认的local磁盘(local磁盘的文件存在storage/app,无法直接被web访问)。比如上传代码应该类似:

    // 示例:上传文件到public磁盘的images目录
    Storage::disk('public')->put('images/avatar.jpg', file_get_contents($request->file('avatar')));
    

    对应的访问URL在Blade模板里可以用{{ asset('storage/images/avatar.jpg') }},直接访问的话就是你的域名/storage/images/avatar.jpg。

  • 检查目录权限
    确保storage和软链接后的public/storage目录有足够的读写权限,避免服务器因权限问题无法读取文件。执行以下命令设置权限(不要用777,不安全):

    chmod -R 755 storage/ public/storage/
    
  • 验证.env里的APP_URL配置
    检查.env文件中的APP_URL是否和你的访问域名/地址一致,比如本地开发应该是APP_URL=http://localhost:8000,线上环境要填你的实际域名,否则生成的图片URL会不正确。

内容的提问来源于stack exchange,提问作者Fil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:01:24