Beware of Relative Includes
Say you have an application with an
index.php that contains:require_once 'include/config.php'; require_once '/path_to_lib/util/all.php';The util library also has an
include/config.php file. In util/all.php it has:require_once 'include/config.php';Which config file will
util/all.php include?
Relative paths are converted to absolute pathnames with something like:
function relativeToAbsolute($relativePath) {
return realpath(dirname($_SERVER['SCRIPT_FILENAME']) . '/' . $relativePath);
}
Since index.php is the script that is being executed then util/all.php will include the config file in the application folder instead of the one from the util library folder. The solution is instead of relative includes use:
require_once dirname(__FILE__) . '/include/config.php';
