在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在我们一般正常情况下使用file_exists 检查文件或目录是否存在是没有问题了,但要注意一个是安全模式和目录没有执行权限的时就会返回false哦。
我们先来看看关于file_exists的用法 file_exists() 函数检查文件或目录是否存在。 如果指定的文件或目录存在则返回 true,否则返回 false。 语法 输出: 1 介绍
思考过程: 1、我原以为是程序里没有这个文件呢,结果发现,文件是有的,那是怎么回事? 2、后来我再猜是不是php内核有问题,我把php的相关内核文件看了一遍,也没发现问题。结果我就把整个过程跟项目经理说去了。——事情也没解决,就这样先不了了之。升级的事情先耽误着。 今天又发现这个问题,我第一反应是php版本是不是升级了,发现没有。——后来把整个目录设置成777就没事了(chmod 777 -R 目录)。我想是不是file_exists()方法问题。 所以,我就进行了相关的调试和实验。 调试代码: 目录:
观察各个权限:test对www是没有任何权限的,而执行文件index.php有读写执行权限,包含文件test.txt有读写权限。 运行结果:
目录的执行权限影响file_exists()
既然成功了,说明file_exists()函数是受目录权限的限制的。 那什么样的目录权限影响file_exists()呢? 我做了几个实验:1、文件的任何上级目录,只有写权限时报文件不存在; 2、文件的任何上级目录,只有读权限时也报文件不存在; 3、而当所有上级目录都有执行权限的时候,报文件是存在的,一切都正常。 结果,说明file_exists()在判断文件是否存在的时候是递归判断每个目录是不是有执行权限。 修改文件路径为相对路径,得出一样的结果。
总结 明显手册中,对目录的执行权限有明确的指示。对目录的执行权限,就是拥有被搜索的权利。 最后我又在php官网找到了一句Warning 如果因为安全模式的限制而导致不能访问文件的话,该函数会返回 FALSE。然而,如果文件在 safe_mode_include_dir 所指定的目录内的话,仍然可以使用 include 来包含。 这个大家也可注意哈。 |
2022-08-18
2022-07-29
2022-08-17
2022-09-18
2022-08-17
请发表评论