我在分配require_once的相对路径时遇到问题。我确信这件事很简单,我没有看到......
文件夹目录结构 第1级:网站 第2级:包括 2级:班级
...这样 site / include / global.php< - 这是调用函数自动加载的地方 站点/类/ db.php中
当我尝试使用
时function__autoload($className)
{
require_once '../class/'.$className.'.php';
}
我得到:
警告:require_once(../ class / db.php)[function.require-once]:无法打开流:没有这样的文件或目录
致命错误:require_once()[function.require]:无法打开所需的'../class/db.php'(include_path ='。; ./ includes; ./ pear')
我做错了什么?如果我将global.php放在类文件夹中,它会正常工作,所以我假设我对导致问题的相对路径的理解很差。
由于
答案 0 :(得分:10)
require(_once)
和include(_once)
相对于第一个脚本的路径工作,即实际调用的脚本。
如果您需要require
包含或必需文件中的内容,并希望相对于该文件工作,请使用
dirname(__FILE__)."/path/to/file";
或@Arkh指出,从PHP 5.3向上
__DIR__."/path/to/file";
答案 1 :(得分:0)
这是否有效(仅限apache,我相信)
require_once($_SERVER['DOCUMENT_ROOT'] . '/class/' . $classname '.php');