При наличии единственной точки входа (например, index.php - это всегда первый загружаемый скрипт), вам лучше всего будет использовать путь включения и определить путь, который нужно ввести туда, найдя каталог, в котором находится текущий Файл находится в. Это означает, что вы можете включать файлы, относящиеся к файлу index.php, без использования константы. Другим преимуществом является то, что при перемещении всех сценариев, include_path будет установлен в новое местоположение. Вот что я сделаю.
<?php
set_include_path(
dirname( __FILE__ ) . DIRECTORY_SEPARATOR . get_include_path( )
);
?>
Теперь, если у вас нет единой точки входа (например, contact.php запрашивается напрямую), вам лучше использовать файл конфигурации, который будет действовать так же, как указано выше: измените include_path. Недостатком этого является то, что вам придется включать этот файл конфигурации в каждый файл, но есть и то, что вы можете перемещать файлы, не меняя ничего. Просто поместите приведенный выше код в config.php и включите его в каждый общедоступный файл.
Существует третий способ, и я всегда использую его для библиотечных файлов, поскольку вы не можете быть уверены, будет ли он использоваться или нет, и вы не можете быть уверены, в каком каталоге он находится. Используйте относительно абсолютный файл включений. Я знаю, это звучит забавно, но я пытаюсь сказать, что если вы включите такие файлы, у вас никогда не возникнет проблем:
<?php
require_once realpath( dirname( __FILE__ ) ) . '/exception.php';
Удачи!