2012-04-19 41 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