2011-03-22 129 views
1

我有一个文件相对包括文件

工人/活动/ bulk_action.php其中包括一个文件

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

里面aclass.php它:

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

看来,在第二个文件中包含的是使用第一个文件的工作目录而不是相对于它自己,导致错误。这个怎么用?

回答

10

您可以调整第二include有:

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

魔术常量__DIR__是指当前的PHP文件,并通过追加后的相对路径,会导致到正确的位置。

但它只适用于PHP5.3以上,如果您需要与旧设置兼容,您将不得不使用dirname(__FILE__)构造。

0

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

您可以使用dirname(__FILE__)去的地步,当前执行的脚本所在的目录的路径:

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

(自PHP 5.3,你可以使用__DIR__

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

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'; 

我也建议你看看自动加载。这将使文件包含过时。