全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1659|回复: 15
打印 上一主题 下一主题

[疑问] 绝对路径与相对路径

[复制链接]
跳转到指定楼层
1#
发表于 2021-11-2 17:23:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
绝对路径实际上严格区分,分为站点绝对路径和系统绝对路径。

在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操作文件时,尽量采用内置函数获取系统绝对路径,可以有效防止系统环境变动产生不兼容的情况。
推荐
发表于 2021-11-2 17:55:01 | 只看该作者
真把论坛当你垃圾留言站了吗
推荐
发表于 2021-11-2 18:03:57 | 只看该作者
学习了。还是蛮有用的
总比水贴好
LOC里不是每个都是编程大佬,所有知识学习是不错的
推荐
发表于 2021-11-2 18:28:06 | 只看该作者
真搞不懂你发这些干嘛,真想了解的人也不会拿你这不算通顺的文章当资料吧。
3#
发表于 2021-11-2 17:52:58 | 只看该作者
????????这是什么啊
5#
发表于 2021-11-2 17:55:09 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
6#
发表于 2021-11-2 17:57:51 | 只看该作者
精神分裂的前兆
9#
 楼主| 发表于 2021-11-2 18:07:01 | 只看该作者
超级无敌小马甲 发表于 2021-11-2 18:03
学习了。还是蛮有用的
总比水贴好
LOC里不是每个都是编程大佬,所有知识学习是不错的 ...

这就是我拿hostloc当日记本的意义所在。
10#
发表于 2021-11-2 18:19:44 | 只看该作者
搁这儿记笔记?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-6 20:59 , Processed in 0.063761 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表