PHP: Почему мой `set_include_path()` не работает, когда указывает на один каталог?

Есть небольшая библиотека, которую я пытаюсь подключить к своему проекту. Эта библиотека имеет некоторые включения и требует для всех классов, поэтому я пытаюсь установить путь включения для всего этого, чтобы работать.

Когда я пытаюсь установить путь для включения в одноранговую ветку, я сталкиваюсь с ошибкой.

Для ориентира, require('/../my/test.php') работает отлично.

Так же

set_include_path('/../');
require_once('my/test.php');

Но однажды я попробую

set_include_path('/../my/');
require_once('test.php');

Я получил:

Предупреждение: require_once(one.php): не удалось открыть поток: нет такого файла или каталога в...

Что мне не хватает?

1 ответ

Решение

Начиная ваши пути с / значит посмотри в корневой каталог, так /../ технически один каталог над корневым каталогом.

Чтобы установить путь включения к родительскому каталогу текущего местоположения, вам просто нужно ../, Чтобы сделать код более переносимым, я бы предложил объединить его с dirname(__FILE__) чтобы получить абсолютный путь к текущему каталогу.

IE:

set_include_path(dirname(__FILE__) . '/../my/');

Обратите внимание на предыдущее / требуется в этом примере как dirname() не возвращает косую черту

Другие вопросы по тегам