Как получить корневой каталог приложения в действии?
Как получить корневой каталог приложения?
Ответы (3)
Первое, что делает ZF2, это меняет текущий каталог через chdir(dirname(__DIR__));
.
Это означает, что каждое будущее включение основано на КОРНЕВОМ ПУТИ вашего приложения, а НЕ на общей папке. Или любую другую текущую папку.
Конечно, это верно только для PHP-файлов.
Если вы хотите определить корневой путь вручную, вы должны перейти к /public/index.php
и добавить строку вида define('ROOT_PATH', dirname(__DIR__));
Как я уже говорил, для INCLUDES это НЕ требуется;), так как вы ВСЕГДА находитесь в корневой папке, когда дело доходит до PHP-файлов;)
RouteMatch
или Request
. Они содержат все, что вам нужно знать.
- person superdweebie; 16.08.2012
chdir()
, тогда все включения PHP будут основаны на назначенном вами пути. Вы всегда можете подняться на более высокий уровень через ../
- person Sam; 30.11.2012
getcwd() работает лучше всего для меня, DIR возвращает корень модуля. Что не очень полезно в этом случае
@Sam: я не очень понимаю твой вопрос. В основном текущий путь равен ZF2-Apps Root. [...] Вы всегда можете подняться на уровень выше через ../
Не совсем. Когда вы создаете модуль, совместно используемый в нескольких приложениях, например. Модуль FileUpload в поставщике, вне приложения. Вы хотите загрузить файл в подкаталог приложения, а не в общий модуль :) В этом случае __DIR__
соответствует пути модуля, а не пути приложения, и ../
не будет хорошим решением;)
Мне нравится ROOT_PATH, как вы упомянули:
define('ROOT_PATH', dirname(__DIR__));
или еще лучше:
getcwd()
__DIR__
всегда равно пути к файлу, в котором он используется. Он никогда не меняется.
- person demonkoryu; 12.06.2013