PHP unlink函数:绝对/相对路径使用疑问,为何绝对路径失效?
问题解析:PHP unlink绝对路径失败、相对路径成功的原因
核心原因:两种「绝对路径」的本质完全不同
- PHP里的
/upload_pic/image.jpg是服务器操作系统的根目录路径,它指向服务器系统最顶层的/目录下的upload_pic/image.jpg,但你的文件实际存在于/Sites/upload_pic/image.jpg(因为delete_pic.php在/Sites目录下),所以PHP找不到文件,触发删除失败的警告。 - 相对路径
upload_pic/image.jpg是相对于当前PHP脚本的执行目录(也就是/Sites/),实际指向/Sites/upload_pic/image.jpg,和文件真实位置匹配,所以能成功删除。
为什么
标签的绝对路径能正常显示?
HTML里的/upload_pic/image.jpg是网站的URL根路径,这个路径由Web服务器(比如Apache、Nginx)的配置决定——你的网站根目录被设置成了/Sites/,所以浏览器请求这个路径时,服务器会自动去/Sites/upload_pic/image.jpg找文件,自然能正常显示。
关键区别总结
- PHP文件操作函数(
unlink、file_exists等)使用的是服务器文件系统路径,开头的/对应系统根目录。 - 前端资源路径(HTML/CSS/JS里的路径)使用的是网站URL路径,开头的
/对应Web服务器配置的网站根目录。
内容的提问来源于stack exchange,提问作者Evan W.
相关产品推荐
相关产品推荐

