如果您使用的是 PHP 5.3.0 或更高版本,您可以(而不是 RageZ 的建议)只使用 __DIR__(一个新定义的魔法常数)。
示例:
include __DIR__ . '/../include.php';
现在,当您想避免 ../ 并映射您的包含时,这无济于事。不过,有一种更好的方法可以做到这一点 - 在所有前端文件(应该是唯一的用户可访问的 PHP 文件)中,您定义一个常量,它提供脚本的根路径(而不是当前文件的根路径)。
例如:
index.php
<?php
define('MYSCRIPT_ROOT', dirname(__FILE__));
// or in php 5.3+ ...
define('MYSCRIPT_ROOT', __DIR__);
// ... do some stuff here
include MYSCRIPT_ROOT . '/includes/myinclude.php';
现在假设我们要在包含目录中包含一个文件。
让我们在includes/myinclude.php 中进行,并包含文件includes/myotherinclude.php
includes/myinclude.php
<?php
if(!defined('MYSCRIPT_ROOT')) exit; // prevent direct access - ALWAYS a good idea.
// ... do stuff here or something
include MYSCRIPT_ROOT . '/includes/myotherinclude.php';
请记住,包含路径应直接相对于项目本身的 root 目录,而不仅仅是前端文件之一。如果子目录中有前端文件,定义常量时需要回退到项目根目录本身。
示例:
subdirectory/index.php
index.php
<?php
define('MYSCRIPT_ROOT', dirname(dirname(__FILE__)));
// or in php 5.3+ ...
define('MYSCRIPT_ROOT', dirname(__DIR__));
// ... do some stuff here
include MYSCRIPT_ROOT . '/includes/myinclude.php';
我们在这里所做的只是添加一个 dirname() 调用,它会在路径中删除一个目录。
见:http://us.php.net/manual/en/function.dirname.php