PHP的file_exists()、is_dir()、is_file()函数失效问题

首页电脑网络PHP的file_exists()、is_dir()、is_file()函数失效问题(2012年06月27日)

今天突然心血来潮,又折腾起来《调试typecho非插件读者墙》,貌似不同的主机环境,导致 if (file_exists($option->dir . '' . md5(strtolower($value['mail'])) . '.jpg'))这个判断会失效,结果见过一阵折腾,发现:PHP的Safe Mode相关的设置过于苛刻,就会出现这样的情形:尽管文件真实存在也被误报,认为文件不存在。

由于服务器端的php.ini我们无法操纵,当用ini_set()也关闭不了Safe Mode模式,我们只有退而求其次,找一个更可靠、安全的检测方法来检测文件是否存在。我们可以借助 $_SERVER['DOCUMENT_ROOT'] 来加以实现。$_SERVER['DOCUMENT_ROOT'] 返回的是网站的根目录,该目录的最后一个子目录不包含目录标志符号“/”,如:
D:/www/htdocs
有了根目录,再加上需要检测的文件的路径,我们将得到一个绝对的路径,PHP就可以顺利使用file_exists()函数对之进行检测。上述代码我们只需要更改一下:
if (file_exists($_SERVER['DOCUMENT_ROOT'].'/'.$option->dir.''.md5(strtolower($value['mail'])) . '.jpg'))

这样就可以了,没油问题了。

以上方法同样适用于目录(is_dir())或文件(is_file())的相关检测函数,能够检测出被安全保护的目录或文件是否存在。

不懂PHP什么的语言,瞎找来测试的,反正目前是通过测试了,呵呵。严谨不严谨就不知道了,用着吧。

已有 2 条评论 »

  1. 安全模式最好不要开,5.3不是都删除这个模式了。

    1. 特意登陆上去看了下,我的空间的PHP是5.2.17版本,估计管理员开了安全模式吧

添加新评论 »

You must enable javascript to see captcha here!