PHP文件上传成功为什么页面却找不到

最近处理一个企业后台上传附件的问题,用户上传合同后,接口明确返回"上传成功",数据库里也有文件记录,但重新打开详情页时,图片和 PDF 全部显示 404。刚开始怀疑是前端地址拼错,后来直接登录服务器检查,文件其实已经真实存在。

问题出在保存路径和访问路径不是一回事。PHP 把文件写到了项目里的 storage/uploads 目录,但 Nginx 的网站运行目录指向 public。程序生成访问地址时却直接拼成 /storage/uploads/xxx.pdf,浏览器访问的实际上是 public/storage/uploads,这个目录根本不存在,所以文件虽然上传成功,网页却永远找不到。

后来把文件存储规则重新整理了一遍。上传时只保存相对路径,服务器上的真实目录和前端访问 URL 分开配置。公开文件统一放到可访问目录,私有合同、客户资料则不再直接暴露地址,而是通过 PHP 接口校验登录状态和权限后再读取文件。同时把文件是否存在、目录是否可写、生成后的访问地址都加入上传日志。

这类问题在 PHP 项目部署时很常见,尤其是宝塔、Laravel 或者项目存在 public 运行目录时。看到"上传成功"并不能说明文件一定能访问,还要确认三个东西:文件到底存在哪里、Nginx 从哪里对外提供文件、程序最后返回的 URL 指向哪里。

#PHP开发 #文件上传 #Nginx #后台系统

相关推荐
似水এ᭄往昔1 小时前
【Qt】--常用控件(显示类控件)
开发语言·qt
qq_452396231 小时前
第十篇:《eBPF 可观测性:零侵扰的深度内核追踪》
服务器·网络·php
AC赳赳老秦2 小时前
文旅市场公开数据分析:基于 OpenClaw 采集景区客流与门票公示数据,生成区域文旅热度监测报告
java·c语言·python·php·symfony·deepseek·openclaw
云小逸2 小时前
C++ 第一阶段:对象、内存与生命周期
开发语言·c++
玖玥拾3 小时前
Lua 基础语法(二)
开发语言·unity·lua
SDWAN_Cheap3 小时前
SD-WAN智能选路技术的算法与实现机制
算法·php·sdwan
王的宝库3 小时前
GO常用标准库包
开发语言·后端·golang
geovindu3 小时前
python: Face Recognition
开发语言·后端·python·人脸识别
平头哥技术团队3 小时前
Day 13 | 调 line-height 和 margin:三处间距让名片页脱离模板感
开发语言·前端·javascript·学习·html5