3

我在为 require_once 分配相对路径时遇到问题。我确定这很简单,我没有看到...

文件夹目录结构一级:站点二级:包含二级:类

所以... site/include/global.php <--这是从 site/class/db.php 调用函数 autoload 的地方

当我尝试使用

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 放入类文件夹中,它会正常工作,所以我假设这是我对导致问题的相对路径的理解不佳..

谢谢

4

2 回答 2

10

require(_once)include(_once)相对于第一个脚本的路径工作,即实际调用的脚本

如果您需要require包含或必需文件中的某些内容,并且希望相对于该文件工作,请使用

dirname(__FILE__)."/path/to/file";

或者正如@Arkh 指出的那样,从 PHP 5.3 开始

__DIR__."/path/to/file";
于 2010-02-12T17:18:29.960 回答
0

这行得通吗(我相信只有apache )

require_once($_SERVER['DOCUMENT_ROOT'] . '/class/' . $classname '.php');
于 2010-02-12T17:16:01.717 回答