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无法读取。按以下步骤操作:
- 删除项目根目录下的
public/storage链接(若存在) - 以管理员身份打开命令提示符(CMD)
- 切换到Laravel项目根目录
- 执行命令:
php artisan storage:link - 确认提示“符号链接已创建”,若提示“已存在”则先删除旧链接再重建
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
相关产品推荐
相关产品推荐

