2012-02-25 102 views
4

这里是我的代码:需要()失败,即使file_exists()债权文件是存在的

if (file_exists('config.php')) { 
    require('config.php'); // This is line 38 
} 

这在某种程度上产生错误:

Warning: require(config.php) [function.require]: failed to open stream: No such file or directory in /path/name/file.php on line 38

如何在地球上这可能吗?

更新:下面确实工作:

if (file_exists(getcwd(). '/config.php')) { 
    require(getcwd(). '/config.php'); 
} 
+0

奇怪。你可以在这些行之前尝试'clearstatcache()'吗? – 2012-02-25 22:19:56

+0

似乎没有影响任何东西。看到我更新的问题。 – Mike 2012-02-25 22:24:28

+2

'is_readable()'而不是?在这种情况下,file_exists并不是特别有用,因为您需要该文件实际上可被脚本读取。把它看作是“银行金库里有钱吗”的区别?和“我可以把一些钱存入保险库吗?” – 2012-02-25 22:24:46

回答

4

试图忽略包含路径:

if (file_exists('config.php')) { 
    require('./config.php'); // This is line 38 
} 

,如果它的工作原理你缺少。目录到包含路径,你必须选择将其纳入或使用相对路径文件名

您可以用PHP的配置指令改变你的include_path(如果你可以改变PHP配置文件),或诉诸get_include_path()在每个文件/项目基地通过set_include_path()

例如:set_include_path('.'. PATH_SEPARATOR . get_include_path());在你的PHP的第一行(或在共同的配置文件);

来源:

+0

谢谢你和Ed Heal的解释。这就是发生了什么事。 – Mike 2012-02-25 22:40:41

4

的PHP includerequire操作以同样的方式,并使用包括路径(include)。因此,将使用此路径来查找该文件,如果您没有正确设置它,它将不会查看当前目录。

使用get include path找出这个值。

5

尝试绝对路径。使用dirname(__FILE__)

require(dirname(__FILE__) . '/config.php'); 
相关问题