Если вы используете PHP 5.3.0 или новее, вы можете (вместо того, что предложил RageZ) использовать просто __DIR__
(недавно определенная магическая константа).
пример:
include __DIR__ . '/../include.php';
Теперь, это не поможет, если вы хотите избежать ../
и составить карту ваших включений. Однако есть лучший способ сделать это - во всех интерфейсных файлах (которые должны быть ТОЛЬКО доступными для пользователя файлами PHP) вы определяете константу, которая обеспечивает корневой путь вашего сценария (а не текущего файла). 1008 *
Например:
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';
Теперь предположим, что мы хотим включить файл в наш каталог include.
Давайте сделаем это в 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