php require_once没有按照我想要的方式工作..相对路径问题

pay*_*ing 3 php require-once

我在分配require_once的相对路径时遇到问题.我确定这是一件很简单的事情,我没有看到......

文件夹目录结构级别1:站点级别2:包括级别2:类

so ... site/include/global.php < - 这是从site/class/db.php调用函数自动加载的地方

当我尝试使用时

function__autoload($className)
{
     require_once '../class/'.$className.'.php';

}
Run Code Online (Sandbox Code Playgroud)

我得到:

警告:require_once(../ class/db.php)[function.require-once]:无法打开流:没有这样的文件或目录

致命错误:require_once()[function.require]:无法开口所需 '../class/db.php'(包含路径= '; ./包括; ./梨'.)

我究竟做错了什么?如果我将global.php放在类文件夹中,它会正常工作,所以我假设我对导致问题的相对路径的理解很差.

谢谢

Pek*_*ica 10

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

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

dirname(__FILE__)."/path/to/file";
Run Code Online (Sandbox Code Playgroud)

或者@Arkh指出,从PHP 5.3开始

__DIR__."/path/to/file";
Run Code Online (Sandbox Code Playgroud)

  • 太快了:(.你也可以用php5.3 +使用`__DIR__` (2认同)