PHP file_exists在不存在的文件上返回true

时间:2016-07-26 18:46:22

标签: php

我有以下代码段:

<?
include("/classes/functions.php");
if(!file_exists("/config.ini")) redirect("/classes/install.php");
else{
    //file is processed
}
?>

这应该做的是从配置文件中读取数据,然后使用它连接到MySQL服务器。如果配置文件不存在,它将重定向到创建文件的设置页面,并填充用户提供的数据。

问题是,即使该文件不存在,file_exists仍会返回true,这会导致else分支在整个地方运行并失败。

我尝试在文件路径中使用$_SERVER['DOCUMENT_ROOT'],以防万一;没有区别。

3 个答案:

答案 0 :(得分:5)

文档:http://php.net/manual/en/function.file-exists.php

  

如果文件名指定的文件目录存在,则返回TRUE;

file_exists(&#39; /non-existing-file.ini')返回true,因为路径&#39; /&#39;存在

使用is_file()代替

答案 1 :(得分:0)

找到问题的根源。对于将来可能偶然发现的人,XAMPP附带的Apache如果以<?而不是<?php为前缀,则不会执行PHP代码。

答案 2 :(得分:-1)

问题出在redirect()函数中。 php中没有重定向使用此代码

<?
include("/classes/functions.php");
if(!file_exists("/config.ini")){
 header("Location: /classes/install.php");
}else{
    //file is processed
}
?>