绝对路径与相对路径

[复制链接]
查看: 1485   回复: 9
发表于 2022-4-19 01:24:35 | 显示全部楼层 |阅读模式
绝对路径实际上严格区分,分为站点绝对路径和系统绝对路径。

在linux当中,系统绝对路径的展现形式等价于站点绝对路径。都是/  开头

但需要注意,系统绝对路径是linux特有的系统根目录/为根目录的,比如包括/root   /home等

但站点的绝对路径实际上是nginx划分的站点目录作为根目录的。比如在网页源代码中使用 /1.js,只能访问域名对应所在根目录的www.xxx.com/1.js

所以在php操作文件时,需要理解站点绝对路径和系统绝对路径的区别。当然php内置函数和魔术常量可以很好的区分出系统绝对路径,

比如__DIR__获取的就是当前php脚本所在的系统绝对路径,diarname(__FILE__);也同样可以拿到系统绝对路径。

但很多开发者喜欢写死路径字符串,比如file_get_contens('/upload/1.txt');这样的方法实际上是错误的。这样的写法将会访问linux系统根目录的 /1.txt,而不是站点所在目录的/1.txt;并且由于php-fpm进程也会受制于nginx划分的站点目录权限,即使存在该文件也无法读取。



而在window系统中,系统绝对路径和站点绝对路径的展现形式就不一样了。

系统绝对路径是以盘符开头的,比如D:\\1.txt;

而站点绝对路径同样是web服务器引擎软件划分的站点根目录为起点,所以网页源代码中使用 /1.js,只能访问域名对应所在根目录的www.xxx.com/1.js



而相对路径,就是以脚本所在目录为基准,相对于代码脚本所在目录位置上下查找对应的资源。相对路径下是不区分系统平台的。但是却存在不可靠的情况,比如在多个incode载入的php脚本中,实际上写在被载入脚本的相对路径已经变成了主动载入其他脚本的当前脚本为基准。相对路径可以是./1.js或者是1.js等,上级访问只能是../../../1.js,而不是........./1.js

但通过上面的例子可以发现,在php操作文件时,尽量采用内置函数获取系统绝对路径,可以有效防止系统环境变动产生不兼容的情况。
回复

使用道具 举报

发表于 2022-4-19 01:24:46 | 显示全部楼层
真把论坛当你垃圾留言站了吗:L:L
回复 支持 反对

使用道具 举报

发表于 2022-4-19 01:25:16 | 显示全部楼层
学习了。还是蛮有用的
总比水贴好
LOC里不是每个都是编程大佬,所有知识学习是不错的
回复 支持 反对

使用道具 举报

发表于 2022-4-19 01:25:37 | 显示全部楼层
真搞不懂你发这些干嘛,真想了解的人也不会拿你这不算通顺的文章当资料吧。
回复 支持 反对

使用道具 举报

发表于 2022-4-19 01:25:43 | 显示全部楼层
loc记事本
回复 支持 反对

使用道具 举报

发表于 2022-4-19 01:26:08 | 显示全部楼层
????????这是什么啊
回复 支持 反对

使用道具 举报

发表于 2022-4-19 01:26:48 | 显示全部楼层
精神分裂的前兆
回复 支持 反对

使用道具 举报

发表于 2022-4-19 01:27:35 | 显示全部楼层
不明觉厉:)
回复 支持 反对

使用道具 举报

发表于 2022-4-19 01:28:33 | 显示全部楼层
这就是我拿hostloc当日记本的意义所在。
回复 支持 反对

使用道具 举报

发表于 2022-4-19 01:28:57 | 显示全部楼层
搁这儿记笔记?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则