В Laravel 5.1 я пытаюсь настроить конкретную конфигурацию среды. В локальной среде и среде разработки структура моего приложения аналогична типичным веткам subversion. Таким образом, у меня есть несколько установок Laravel параллельно. Пример:
http://dev.domain/trunk/public/...
http://dev.domain/branches/branch1/public/...
Для работы со всеми этими различными версиями моих приложений мне как-то нужна динамическая конфигурация, связанная с «базовым путем», то есть частью между доменом и общей папкой.
То, что я сделал до сих пор, это положить доменное имя в моем app.php
, То, с чем я борюсь, это то, как и где настроить, эта динамическая часть зависит от того, под каким подпутем вы вызываете ваше приложение.
Я попытался настроить файл конфигурации config/myapp/app.php
, Это будет моя производственная конфигурация, поэтому параметр config там выглядит следующим образом (потому что в производственной среде у меня были бы следующие подкаталоги):
url_path_to_public = ''
Теперь я бы хотел перенести это в мою локальную среду и среду разработки, создав подпапку с именем в моей текущей среде. dev
а затем перезаписать этот параметр динамическим выражением. Так это выглядит так:
'url_base_path_to_public' => strstr(str_replace($_SERVER['DOCUMENT_ROOT'], '', __FILE__), '/config/dev/myapp/app.php', true).'/public',
Итак, этот файл находится в:
config/dev/myapp/app.php
По какой-то причине этот параметр не используется, хотя я запускаю свое приложение в dev
Режим. Я ожидал, что конфигурация будет каскадировать этот параметр.
Альтернативой может быть установка этой информации непосредственно в конфигурационном файле для конкретной среды. .env
, но там я не могу использовать динамическое выражение, подобное упомянутому выше.
Я сделал ошибку с каскадом, чтобы работать как ожидалось?
В Laravel 5 каскадная конфигурация была отброшена в пользу dotenv. Таким образом, поведение, которое вы ожидаете от установки вашей среды в dev
и пусть он прочитает config/dev/
файлы больше не существуют.
Других решений пока нет …