PHP查找require_once的真实路径

3
我需要在admin/test.php中使用require_once引入main.class.phpfunctions.phpconfig.php文件。如何让PHP找到这些文件的真实路径?请注意:main.class.php位于class文件夹functions.php位于includes文件夹config.php位于根目录test.php位于admin文件夹。 文件目录:
root
    /admin/
        ->test.php 
    /class/
        ->main.class.php
    /includes/
        ->functions.php
    /templates
    config.php
    phpinfo.php

2
为什么不将/root放入您的include_path中,然后只需使用require('class/main.class.php')等即可? - Marc B
1
@HamZa DzCyberDeV:是的!我正在寻找最好的方法。 - B.B King
3个回答

5
我会将你的`root`文件夹加入到包含路径中,并从那里开始工作。
来自`admin/test.php`。
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(__DIR__ . '/..'),
    get_include_path()
)));

require_once 'class/main.class.php';
require_once 'includes/functions.php';
require_once 'config.php';

更新

如果我理解您的问题正确,假设您想在config.php文件中定义此内容,您可以像这样操作:

config.php

set_include_path(implode(PATH_SEPARATOR, array(
    __DIR__,
    get_include_path()
)));

require_once 'class/main.class.php';
require_once 'includes/functions.php';

admin/test.php

require_once __DIR__ . '/../config.php';

这是一个有用且漂亮的答案。可以/如何将您的方法放入“定义”中,并将其放入配置文件,然后在我的文件中使用? - B.B King

3

以下是一种不依赖于 $_SERVER 变量的解决方案:

require_once(__DIR__.'/../class/main.class.php');
require_once(__DIR__.'/../includes/functions.php');
require_once(__DIR__.'/../config.php');

3
“FYI,__DIR__ 这个神奇常量从 PHP 5.3.0 开始就存在了。__DIR__ === dirname(__FILE__)。” - Phil

0

admin/test.php,您需要像这样:

require_once("../class/main.class.php");
require_once("../includes/functions.php");
require_once("../config.php");

完全不是攻击,我只是不明白你的意思。放松 :) - zipser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接