1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 【php】相对路径/绝对路径报错?

【php】相对路径/绝对路径报错?

时间:2022-01-22 02:18:41

相关推荐

【php】相对路径/绝对路径报错?

相对路径报错原因:文件夹名称或路径含中文。

>>>>>>>>>>>>>>>>>>>温馨提示:内容略长,点击此处直达重点

准备工作:将同名不同内容文件分别放置demo目录和环境目录

文章目录

一、先来看看几种用来操作文件的函数的情况(同级目录,即相对路径下)1.require 调用同级文件,毫无压力2.file() 只要父级文件夹是中文就会获取到环境目录下的同名文件,而非同级的。3.file_get_contents() 跟 file() 是一样的情况4.file_exists() ,我先把环境目录下的同名文件删了,这样它获取到的就是0个了,不信请看二、再说个我昨天的新鲜例子(文件上传功能)1.首先测试当父级英文名时,通过相对路径保存到当前目录(真香)a)当前目录的相对路径为: ./b)上传一张图片,不用说,成功保存2.不改变代码,修改父级文件夹名称为中文,会出现什么情况a)首先,到环境目录下搜索关键词,以证明开始并不存在该图b)再到编辑器,将父文件夹名称修改为中文,操作上传图片,发现成功保存,但目录下并不存在c)来到环境目录,重新搜索,发现,被保存在这里3. 无论是 '文件名.后缀' 还是 './' ,都是指代当前目录(路径或文件),如果父级中文名,它并不会报错,而是指向环境目录。但如果脱离了当前目录,它就直接各种报错了4.换成绝对路径,成功访问5.没错,绝对路径确实可以解决上面的问题,但是,img的src,并不支持绝对路径!a)使用绝对路径来一次,报错b)换成相对路径再来一次6.那问题就来了呀!路径不想修改成英文名,保存无法用相对路径,只能用绝对路径;图片读取不能用绝对路径,只能用相对路径,这么矛盾,到底怎么解决,难道只能用英文了?三、你所不知道的路径用法,绝对中的相对路径1.首先定义一个指向当前脚本的【绝对路径】2.然后再定义一个从当前脚本到目标文件的【相对路径】3.需要谁就用谁,还可以互相搭配PS:保存到数据库的路径,是需要包含图片名的

一、先来看看几种用来操作文件的函数的情况(同级目录,即相对路径下)

1.require 调用同级文件,毫无压力

2.file() 只要父级文件夹是中文就会获取到环境目录下的同名文件,而非同级的。

3.file_get_contents() 跟 file() 是一样的情况

4.file_exists() ,我先把环境目录下的同名文件删了,这样它获取到的就是0个了,不信请看

还有 move_uploaded_file() 等也是如此,只要你外部磁盘直到到你的php脚本的路径有中文,那你用相对路径去移动文件,就会把文件移动到php环境目录下,目标目录,却空空如也。

Q:那,难道就没有解决的办法了么?

A:有,文件夹用英文命名,路径用起来就不会各种报错了。

Q:可,有些文件下安装好软件了,改名会影响运行;而且,英文看起来麻烦,中文就很清晰,能有让中文路径也能访问的方法吗?

A:有,使用绝对路径。

Q:绝对路径好是好,访问中文路径没阻碍,可是,有些地方用绝对路径也会提示错误,而且,中文更可读,一堆鸡肠不习惯,还有更好的办法么?

A:有的,经本人测试,发现了一种更可行解决方法。你所不知道的路径方法,解决 move_uploaded_file() 等各种路径访问操作。

二、再说个我昨天的新鲜例子(文件上传功能)

1.首先测试当父级英文名时,通过相对路径保存到当前目录(真香)

a)当前目录的相对路径为: ./

b)上传一张图片,不用说,成功保存

2.不改变代码,修改父级文件夹名称为中文,会出现什么情况

a)首先,到环境目录下搜索关键词,以证明开始并不存在该图

b)再到编辑器,将父文件夹名称修改为中文,操作上传图片,发现成功保存,但目录下并不存在

c)来到环境目录,重新搜索,发现,被保存在这里

3. 无论是 ‘文件名.后缀’ 还是 ‘./’ ,都是指代当前目录(路径或文件),如果父级中文名,它并不会报错,而是指向环境目录。但如果脱离了当前目录,它就直接各种报错了

4.换成绝对路径,成功访问

5.没错,绝对路径确实可以解决上面的问题,但是,img的src,并不支持绝对路径!

a)使用绝对路径来一次,报错

b)换成相对路径再来一次

6.那问题就来了呀!路径不想修改成英文名,保存无法用相对路径,只能用绝对路径;图片读取不能用绝对路径,只能用相对路径,这么矛盾,到底怎么解决,难道只能用英文了?

三、你所不知道的路径用法,绝对中的相对路径

【当初在慕课看过张旭鑫大佬讲解position定位之绝对定位中的相对定位的方法(思维),然后就想在这里尝试这种方法,发现居然可行且好用】

1.首先定义一个指向当前脚本的【绝对路径】

$abUrl = '从磁盘卷标出发,指向当前脚本的绝对路径';

2.然后再定义一个从当前脚本到目标文件的【相对路径】

$reUrl = '从当前脚本出发,指向目标文件的相对路径';

3.需要谁就用谁,还可以互相搭配

检测当前目录文件是否存在,绝对相对一起用移动文件保存到目录,绝对相对一起用存储进数据库的url,就用相对路径(只要你的读取图片脚本跟当前脚本同在一个目录下,就没问题的)显示文件保存到哪里,随意,爱用谁用谁,两个一起也没啥

PS:保存到数据库的路径,是需要包含图片名的

返回顶部,再来一遍

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。