У меня есть файл
работники / деятельность / bulk_action.php, которая включает файл
include('../../classes/aclass.php');
Внутри aclass.php он делает:
include ('../tcpdf/config/lang/eng.php');
Кажется, что включение во второй файл использует рабочий каталог первых файлов вместо того, чтобы относиться к нему самому, что приводит к ошибке. Как это работает?
Вы можете адаптировать второй include
:
include (__DIR__.'/../tcpdf/config/lang/eng.php');
Магическая константа __DIR__
относится к текущему файлу .php и добавляет относительный путь после этого, приведет к правильному расположению.
Но он работает только с PHP5.3, и вам придется использовать конструкцию dirname(__FILE__)
если вам нужна совместимость с более старыми настройками.
Вам было бы лучше, установив правильное значение для include_path
и затем используя пути относительно этого каталога.
set_include_path( get_include_path() . PATH_SEPARATOR . realpath(__DIR__ . '/your/lib') ); include 'tcpdf/config/lang/eng.php'; include 'classes/aclass.php';
Я также предлагаю вам взглянуть на автозагрузку . Это сделает файл устаревшим.
Файлы включаются в зависимости от заданного пути к файлу или, если ни один не указан, указан путь include_path. Если файл не найден в include_path, include () будет, наконец, проверять собственный каталог вызывающего сценария и текущий рабочий каталог перед сбоем.
Вы можете использовать dirname(__FILE__)
чтобы получить путь к каталогу, в котором находится dirname(__FILE__)
исполняемый скрипт:
include(dirname(dirname(__FILE__)) . '/tcpdf/config/lang/eng.php');
(с PHP 5.3 вы можете использовать __DIR__
)
Или, определите константу в первом файле, которая указывает на корневой каталог и используйте его в своих включенных.