Laravel部署至Windows XAMPP后storage目录图片返回404错误如何解决
问题根源
你当前采用的修改server.php为index.php、复制public/.htaccess到项目根目录的部署方式,没有修正Laravel默认的路径映射逻辑,核心问题有两点:
- Laravel默认的公共存储URL生成规则,假设站点根目录直接对应项目的
public文件夹,你部署在XAMPP的子目录ProjectFolderName下且未修改web根目录配置,生成的URL缺少/public路径段,和实际可访问路径不匹配。 - 项目
.env中的APP_URL参数未适配当前部署路径,导致生成的链接前缀错误。
解决方案
方案1:标准部署(推荐,无后续路径兼容问题)
这是Laravel官方推荐的部署方式,从根源解决所有路径问题:
- 打开XAMPP的Apache配置文件
httpd.conf,或单独配置虚拟主机,将站点的DocumentRoot指向你项目的public文件夹,例如项目路径为C:/xampp/htdocs/ProjectFolderName,则设置DocumentRoot = "C:/xampp/htdocs/ProjectFolderName/public" - 修改项目根目录下
.env文件的APP_URL参数为http://localhost(若配置了自定义虚拟主机域名则替换为对应域名) - 重启Apache服务即可正常访问。
方案2:临时适配方案(适合本地快速测试,不修改Apache配置)
如果不想调整Apache的web根目录,可通过修改Laravel配置适配当前部署结构:
- 打开项目根目录的
.env文件,修改APP_URL为http://localhost/ProjectFolderName/public - 打开
config/filesystems.php,找到public磁盘的配置块,确认url参数配置如下:
'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ],
- 在项目根目录执行命令清除配置缓存:
php artisan config:clear
注意:无论采用哪种方案,都要先确保你已经执行过
php artisan storage:link命令,创建了public/storage到storage/app/public的软链接,这是Laravel公共存储资源可访问的前提。
内容的提问来源于stack exchange,提问作者Harsh Patel
相关产品推荐
相关产品推荐

