2012-03-06 91 views
0

我有一个PHP应用程序,我试图包括,但它导致的问题,因为我试图从一个子目录中包含它的文件。举例来说,这里是(或多或少)我想与之合作的目录结构:如何从当前脚本以外的基本路径包含PHP脚本?

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

lib_load.php有文件lib_file_a.phplib_file_b.php(相对路径)的include命令。

我想完成的是从some_script.php包括lib_load.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')); 

但是,这一次,同样的错误又回来了。我究竟做错了什么?

编辑:我意识到这个问题实际上是在库加载程序,其结果是包括基于绝对路径的文件,而不是相对路径。 (我应该仔细阅读)。我通过更改库使用的路径来解决问题。如果国防部看到这个请求,应该关闭这个问题。

回答

2

试试这个:

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

或者,如果你使用PHP 5.3或更高版本使用这个代替(它看起来更好):

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

要包括的lib负载

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

lib加载内部

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

如果我对你的问题有所了解