文章目录

最近在看CodeIgniter的源码,在system/common.php中有个公共函数load_class的定义,其中用到file_exists函数来判断指定类的文件是否存在,于是就具体查了下该函数的用法~

PHP官方文档是这样解释的:

  • 说明

    bool file_exists ( string $filename )

    检查文件或目录是否存在。

  • 参数

    filename

    文件或目录的路径。

但是我在搜索的过程中看到了其他人的分享 坑爹的file_exists 他遇到的问题是,在某个目录下明明有文件存在,调用该函数判断后却返回FALSE(该文件不存在),在经过一系列测试后他得出的结论是这样的:

  • 文件的任何上级目录,只有写权限时报文件不存在;
  • 文件的任何上级目录,只有读权限时也报文件不存在;
  • 而当所有上级目录都有执行权限的时候,报文件是存在的,一切都正常。

结果,说明file_exists()在判断文件是否存在的时候是递归判断每个目录是不是有执行权限。

不过他在文末中提到手册中其实是有提示说明的,如果目录没有执行权限,php-fpm应用进程就不能到这个目录下面去进行文件搜索,当然就认为文件不存在(实际是认为没有可执行的目录是不存在的)

所以通过此问题我联想到在之前配置Apache时文件目录需要更改权限的问题了。

文章目录