background image

PHP 实例:php file_exists 无效的 种解决办法

方法 1 :

据官方手册上描述若 php 教程的 safe mode 相关的设置过于苛刻,就会出现这样

 

的情形:尽管文件真实存在也被误报,认为文件不存在。

由于服务器端的 php.ini 我们无法操纵,当用 ini_set()也关闭不了 safe mode 模式,我们只
有退而求其次,找一个更可靠、安全的检测方法来检测文件是否存在。我们可以借助 
$_server['document_root'] 来加以实现。$_server['document_root'] 返回的是网站的根目录,该

目录的最后一个子目录不包含目录标志符号 /”,如:

d:/www/htdocs 

有了根目录,再加上需要检测的文件的路径,我们将得到一个绝对的路径,php 就可以
顺利使用 file_exists()函数对之进行检测。上述代码我们只需要更改第一行为(注意,我们
在 config.php

之前加上了符号 /”):

$file=$_server['document_root']."/config.php"; 

如此,代码的执行就很可信,不会出现预期以外的结果。
以上方法同样适用于目录(is_dir())或文件(is_file())的相关检测函数,能够检测出被
安全保护的目录或文件是否存在。

最后顺便提一下:这类被 php 特殊设置所保护的文件在引用(include 和 require)时不必
加上$_server['document_root']路径,因为,根据 php 说明文档,它们是允许引用的。

方法 2:

本人的情况是因为文件在 windows 和 linux 之间来回的移动。造成 linux 下文件和

目录的访问权限被改变,导致出文件除拥有者外其他均无访问权限。使用 chmod -r 755 
xxx/* 解决了问题。