我有一个我正在尝试包含的PHP应用程序,但它导致了问题,因为我试图将其文件包含在子目录中。例如,这是我正在尝试使用的目录结构(或多或少):
/site
/scripts
/local
some_script.php
lib_file_a.php
lib_file_b.php
lib_load.php
lib_load.php
对文件include
和lib_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看到此请求,则应关闭此问题。
答案 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');