php的绝对/相对路径包括

时间:2012-09-10 15:58:50

标签: php

我在一个名为extract.php的文件中有一个包含许多php的函数(orders)

http://example.com/application/dir1/dir2/dir3/extract.php

function orders ($username)
{
 require ("functions.inc.php");
 define("DATAGRID_DIR", "./../datagrid/");
 define("PEAR_DIR", "./../datagrid/pear/");
 require_once (DATAGRID_DIR . 'datagrid.class.php');
 require_once (PEAR_DIR . 'PEAR.php');
 require_once (PEAR_DIR . 'DB.php');
 require_once ('./../datagrid/classes/database.class.php');

//function code here
}

我有另一个文件(install.php)在同一目录中调用此函数,它运行良好。

<?php
include ("extract.php");
orders ("643443876996");
?>

然而,当我将它包含在此路径中的另一个函数中时 http://example.com/orders/getorder.php,它给我一个错误,它无法找到我的文件'datagrid.class.php';

    <?php
    include ("include('../application/dir1/dir2/dir3/extract.php');");
    orders ("643443876996");
    ?>

如何让路径引用正确?

2 个答案:

答案 0 :(得分:1)

来自服务器根目录的引用,使用$ _SERVER ['DOCUMENT_ROOT']或

require_once(DATAGRID_DIR。'/ application / dir1 / second2 / dir3 / datagrid.class.php');

等...

答案 1 :(得分:1)

相对文件总是从调用PHP二进制文件的目录计算。

为避免您可以使用__FILE__常量来引用实际文件。

使用它你可以这样写:

$path = realpath(dirname(__FILE__)) . '/my/relative/path';

include_once $path;

无论脚本在何处被调用,它总是会产生相同的路径