file_exists()
文章目录
最近在看CodeIgniter
的源码,在system/common.php
中有个公共函数load_class
的定义,其中用到file_exists
函数来判断指定类的文件是否存在,于是就具体查了下该函数的用法~
PHP官方文档是这样解释的:
说明
bool file_exists ( string $filename )
检查文件或目录是否存在。
参数
filename
文件或目录的路径。
但是我在搜索的过程中看到了其他人的分享 坑爹的file_exists 他遇到的问题是,在某个目录下明明有文件存在,调用该函数判断后却返回FALSE
(该文件不存在),在经过一系列测试后他得出的结论是这样的:
- 文件的任何上级目录,只有写权限时报文件不存在;
- 文件的任何上级目录,只有读权限时也报文件不存在;
- 而当所有上级目录都有执行权限的时候,报文件是存在的,一切都正常。
结果,说明file_exists()在判断文件是否存在的时候是递归判断每个目录是不是有执行权限。
不过他在文末中提到手册中其实是有提示说明的,如果目录没有执行权限,php-fpm应用进程就不能到这个目录下面去进行文件搜索,当然就认为文件不存在(实际是认为没有可执行的目录是不存在的)。
所以通过此问题我联想到在之前配置Apache
时文件目录需要更改权限的问题了。