Как потребовать index.php от третьей стороны, которая также требует вещи - PullRequest
0 голосов
/ 08 мая 2018

У меня есть эта проблема:

В pseudoRoot/Dir/api/index.php У меня есть:

<php
    require "SomeFolder/index.php";
?>

В pseudoRoot/Dir/api/SomeFolder/index.php У меня есть:

<php
    require "SomeDeepFolder/someScript.php";
?>

, где pseudoRoot/Dir/api/SomeFolder/SomeDeepFolder/someScript.php.

Теперь все в SomeFolder - это какая-то сторонняя библиотека, с которой я не хочу связываться, и требования / включения там, как в псевдо для SomeFolder/index.php выше. Вызов pseudoRoot/Dir/api/index.php приводит к ошибке failed to open stream: No such file or directory. Насколько я понял, это связано со странным способом, которым PHP обрабатывает относительные пути (второй require / include имеет относительный путь первого файла вместо своего собственного), но как я могу заставить этот тип маршрутизации работать без необходимости возиться с файлы библиотеки означают, что ничего не трогать в .../SomeFolder и работать только с .../api/index.php? Я пытался использовать require dirname(__FILE__) . /SomeFolder/index.php безуспешно.

Ах, и "поток" достигает pseudoRoot/Dir/api/index.php через правило перезаписи в .htaccess, направляя все запросы к нему.

Извините, если вопрос повторяется, пока не нашел ответа.

1 Ответ

0 голосов
/ 08 мая 2018

Если вы используете Composer, он будет обрабатывать требования для вас.

Вместо dirname(__FILE__) вы также можете использовать __DIR__. Но он возвращает каталог текущего файла.

Использование __DIR__ должно работать, если добавленная часть связана с текущим каталогом. Вы также можете сохранить его один раз как $rootDirectory и использовать его для загрузки всех файлов, связанных с этим корневым каталогом.

<?php
dirname(__DIR__, 1); // the extra parameter is for getting a level (or more) up from the current directory.
?>
...