pathinfo() 解析的是路径字符串。它不会访问磁盘,也不会确认文件真实存在。拿它做扩展名展示很方便,拿它直接判断文件类型就不够。
问:archive.tar.gz 的扩展名是什么

返回的 extension 是 gz,filename 是 archive.tar。如果业务把 tar.gz 当作完整格式,需要自行维护复合扩展名规则,不能只看单个 PATHINFO_EXTENSION。
问:.env 为什么也有扩展名

以点开头的文件名会触发特殊结果。不同文件名结构下,filename 可能为空,点号后的部分可能被识别成扩展名。处理配置文件、隐藏文件时,要为 .env、.gitignore 这类名字补测试。
问:pathinfo 能确认路径安全吗

不能。../tmp/report.csv 只是被拆成目录、文件名和扩展名。路径是否越界、软链接指向哪里、目标是否存在,需要结合 realpath()、允许目录校验和文件系统函数处理。
上传文件也不能只信扩展名。服务端应检查上传错误码、大小、MIME 信息和实际内容,再生成新的存储文件名。pathinfo() 放在展示和命名环节更合适。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











