如何从当前脚本以外的基本路径中包含PHP脚本?

时间:2012-03-06 04:39:23

标签: php include directory

我有一个我正在尝试包含的PHP应用程序,但它导致了问题,因为我试图将其文件包含在子目录中。例如,这是我正在尝试使用的目录结构(或多或少):

/site
    /scripts
        /local
            some_script.php
    lib_file_a.php
    lib_file_b.php
    lib_load.php

lib_load.php对文件includelib_file_a.php(相对路径)有lib_file_b.php命令。

我想要完成的是在lib_load.php中添加some_script.php,但是我在lib_load.php的方式存在问题。起初我尝试了require('../../../lib_load.php');

正如您所料,我看到了错误,“无法打开所需的'C:\ xampp \ htdocs \ site \ scripts \ local \ lib_file_a.php'”。如您所见,PHP正在尝试包含一个不存在的文件。我找到了一个Stack Overflow帖子告诉我使用绝对路径(link),但这没有帮助。我接下来尝试了这段代码:

require(realpath(dirname(__FILE__) . '../../../' . 'lib_load.php'));

然而,这一次,同样的错误又回来了。我做错了什么?

编辑:我意识到这个问题实际上是在库加载器中,结果是基于绝对路径而不是相对路径包含文件。 (我应该仔细阅读。)我通过更改库使用的路径解决了这个问题。如果mod看到此请求,则应关闭此问题。

2 个答案:

答案 0 :(得分:8)

包含lib load

require $_SERVER['DOCUMENT_ROOT'] . '/scripts/lib_load.php';

在lib load内部

require dirname(__FILE__) . '/lib_file_a.php';

如果我的问题正确

答案 1 :(得分:2)

试试这个:

require dirname(__FILE__) . '/../../../lib_load.php');

或者,如果您使用的是PHP 5.3或更高版本,请使用它(它看起来更好):

require __DIR__ . '/../../../lib_load.php');