我有以下代码段:
<?
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']
,以防万一;没有区别。
答案 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
}
?>