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

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

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

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

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

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

相关推荐
FRing0311 分钟前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊16 分钟前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆6751 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩2 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
大白玉米2 小时前
MoxPlayer 弹幕播放器源码智能解析线路管理系统自研内核
php
陈希1234 小时前
Nginx 从入门到能扛事:反向代理、负载均衡与 HTTPS 实战
nginx·https·负载均衡
Hhy_11074 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
starzy19904 小时前
深入理解Scala函数定义:从方法到函数的类型跨越
开发语言·scala
starzy19904 小时前
深入理解Scala递归函数:从栈溢出到尾调用优化
开发语言·scala
三*一4 小时前
Mapbox‑GL JS 多边形折点编辑工具:实现原理、功能拆解与踩坑总结
开发语言·javascript·ecmascript