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

Laravel上传文件404错误:静态文件无法访问(XAMPP本地环境)

Laravel在Windows XAMPP下Storage文件无法访问(404)的解决方法

核心问题排查与修复步骤

1. 对齐文件存储路径与软链接指向

你提到文件实际位于storage/application/common/documents,但Laravel的storage:link是将public/storage指向storage/app/public目录。如果文件没存到storage/app/public/documents下,软链接无法映射到目标文件,必然出现404。

  • 检查上传逻辑代码,确保文件保存路径为storage_path('app/public/documents'),而非自定义的其他目录。
  • 手动确认storage/app/public/documents/yourfile.pdf文件确实存在。

2. 修复Apache配置的无效指令与路径错误

你贴出的Apache配置片段中的Let everything pass和All must be given是无效指令,且目录路径用了大写Public,可能导致匹配失败。修改httpd.conf中的目录配置:

<Directory "D:/Academic Affairs/Hall Reservation/Hall Reservation-System 3/name/Hall-Book/public" >
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>
  • 确保路径中的public为小写(与Laravel默认目录一致)
  • 添加FollowSymLinks选项,允许Apache跟随符号链接
  • 修改后重启Apache服务生效

3. 用管理员权限重建符号链接

Windows下符号链接若以普通权限创建,可能导致Apache无法读取。按以下步骤操作:

  1. 删除项目根目录下的public/storage链接(若存在)
  2. 以管理员身份打开命令提示符(CMD)
  3. 切换到Laravel项目根目录
  4. 执行命令:php artisan storage:link
  5. 确认提示“符号链接已创建”,若提示“已存在”则先删除旧链接再重建

4. 验证URL访问路径的正确性

  • 若用php artisan serve启动服务(8000端口),URL应为http://127.0.0.1:8000/storage/documents/yourfile.pdf
  • 若直接用XAMPP的Apache服务,URL应为http://localhost/你的项目目录名/public/storage/documents/yourfile.pdf(除非已将项目public目录设为Apache的DocumentRoot)

5. 检查Windows目录权限

确保以下目录具备读取权限:

  • storage/app/public及其子目录
  • public/storage符号链接
  • 右键目录 → 属性 → 安全 → 确认Everyone或Apache服务账户(如NT AUTHORITY\SYSTEM)拥有“读取和执行”权限

额外排查点

  • 检查Laravel的.env文件,确认FILESYSTEM_DISK=public(默认配置,避免被修改为其他磁盘)
  • 清除Laravel缓存:执行php artisan cache:clear和php artisan config:clear,排除配置缓存导致的异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:13:13