2012-04-19 34 views
1

我有一个配置文件,其中包含一般配置(在一个git仓库中)和一个覆盖配置属性(在仓库中被忽略)的本地配置文件。眼下本地配置文件包含在配置文件的开头:可选包括在PHP

include_once 'local_config.php'; 

但我想包括是有条件的:如果该文件local_config.php实际上只存在做。我可以做一个enter link description here没有问题,但首先我需要检查文件是否存在。所以我尝试了get_include_path(),但它返回一个路径列表,我将不得不解析这个列表并检查每一个。

另一种选择是调用include_once()并禁止警告,但它更加混乱。有没有一种更简单的方法来做一个真正的可选包括在PHP中?

+3

也许我在想简单,但一个简单的'if(file_exists($ path)){'是你需要的。 – SativaNL 2012-04-19 08:57:05

+0

看到我的评论如下:get_include_path()可能会返回一些不同于当前目录'.',在这种情况下,我应该看看那里:'if(file_exists($ include_path。$ path)){}'。 – alexfernandez 2012-04-19 14:11:14

回答

3

使用file_exists()预定义的PHP函数,像这样:

// Test if the file exists 
if(file_exists('local_config.php')){ 
    // Include the file 
    include('local_config.php'); 
}else{ 
    // Otherwise include the global config 
    include('global_config.php'); 
} 

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

+1

我不认为这就够了。我如何确定包含文件是否在当前目录中?也许一般配置已经从一个叫做set_include_path()的不同文件包含到不同的目录中。在这种情况下,我应该看看:if(file_exists($ include_path。$ path)){} .'在我的本地系统中,include_path中有几条不同的路径。 – alexfernandez 2012-04-19 14:10:03

+0

然后用'foreach'语句遍历每个路径。您也可以使用PHP的'glob'函数来列出目录中的文件。这有帮助吗? – 2012-04-19 14:46:56

+0

这正是我所描述的和我正在拼命想要避免的:) – alexfernandez 2012-04-19 18:27:14