相对包含文件

时间:2011-03-22 22:07:15

标签: php

我有一个文件

workers / activity / bulk_action.php,其中包含一个文件

include('../../classes/aclass.php');

在aclass.php里面它确实:

include ('../tcpdf/config/lang/eng.php');

似乎第二个文件中的include使用的是第一个文件工作目录而不是相对于自身,导致错误。这是如何工作的?

3 个答案:

答案 0 :(得分:11)

您可以使用第二个include进行调整:

include (__DIR__.'/../tcpdf/config/lang/eng.php');

魔术常量__DIR__指的是当前的.php文件,通过在此之后附加相对路径,将导致正确的位置。

但它仅适用于PHP5.3,如果您需要兼容旧设置,则必须使用dirname(__FILE__)构造。

答案 1 :(得分:1)

通过为include_path设置适当的值然后使用相对于此目录的路径,您会更好。

set_include_path(
    get_include_path() .
    PATH_SEPARATOR .
    realpath(__DIR__ . '/your/lib')
);

include 'tcpdf/config/lang/eng.php';
include 'classes/aclass.php';

我还建议您查看自动加载。这将使文件包含过时。

答案 2 :(得分:0)

  

根据给定的文件路径包含文件,如果没有给出,则指定include_path。如果在include_path中找不到该文件,include()最终将在调用脚本自己的目录和当前工作目录中检查失败。

您可以使用dirname(__FILE__)获取当前执行脚本所在目录的路径:

include(dirname(dirname(__FILE__)) . '/tcpdf/config/lang/eng.php');

(自PHP 5.3起,您可以使用__DIR__

或者,在第一个文件中定义一个指向根目录的常量,并在包含中使用它。