Настройка сервера IIS, на котором будет работать Laravel. Необходимо указать путь к хранилищу, указывающий на сетевой диск, который сопоставлен с Z:
Поскольку мне нужно, чтобы это можно было настроить, я бы хотел сделать это через файл .env
.
Я попытался установить его через AppServiceProvider
, используя что-то вроде $app->useStoragePath(config('app.storage_path'));
.
Это установило путь к нужному каталогу при использовании dump(storage_path())
. Но проблема в том, что конфигурация файловой системы устанавливается до того, как AppServiceProvider
изменит каталог. В итоге Storage::disk()
использует каталог по умолчанию для хранения.
Затем я попытался поместить $app->useStoragePath(env('APP_STORAGE_PATH', storage_path()));
в файл bootstrap/app.php
. Очевидно, это не работает, так как функция env()
всегда возвращает null
здесь. Я понял, что Laravel не инициализировал пакет \Dotenv\Dotenv
, поэтому он не читает файл .env
.
Чтобы исправить эту проблему, я добавил этот код в bootstrap/app.php
-
/**
* Initializing dotenv here, because we need configurable storage path
*/
$dotEnv = new \Dotenv\Dotenv(__DIR__ . '\\..\\');
$dotEnv->load();
$app->useStoragePath(env('APP_STORAGE_PATH', storage_path()));
Это работает, но я не уверен, что это лучшее решение, так как Laravel, вероятно, снова инициализирует .env
в какой-то момент. Так что мне было интересно, если это хорошее решение? Или есть лучший?
Спасибо за ответы!