Dotenv должен быть экземпляром Dotenv \ Loader - PullRequest
0 голосов
/ 28 февраля 2019

Я установил phpdotenv из vlucas с помощью composer в проекте codeigniter.

Я также добавил хук, который я немного запутался, если это необходимо для v3.3

    $hook['pre_system'] = function() {
    $dotenv = new Dotenv\Dotenv(APPPATH);
    $dotenv->load();
};

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

Сообщение: Аргумент 1, переданный в Dotenv \ Dotenv :: __ construct (), должен быть экземпляром Dotenv \ Loader, заданная строка, вызванная в C: \ xampp \ htdocs \ test \ application \ config \ hooks.php в строке 15

Имя файла: C: \ xampp \ htdocs \ test \ vendor \ vlucas \ phpdotenv \ src \ Dotenv.php

Похоже, класс загружается, но ему не нравится параметр "APPPATH", но вся документация, которую я нашел, использует это.

Любая помощь приветствуется

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Dotenv должен быть экземпляром Dotenv \ Loader

На самом деле вы не следуете документации по обновлению Laravel с любой версии до 5.8, я нашел решение после поиска в течение нескольких часов.Наконец я нашел решение.Вам просто нужно заменить этот код в вашем файле среды.

$env = $app->detectEnvironment(function(){
$environmentPath = __DIR__.'/../.env';
$setEnv = trim(file_get_contents($environmentPath));
if (file_exists($environmentPath))
{
    putenv('APP_ENV='.$setEnv);
    if (getenv('APP_ENV') && file_exists(__DIR__.'/../.' .getenv('APP_ENV') .'.env')) {
        $dotenv = Dotenv\Dotenv::create(__DIR__.'/../', '.'.getenv('APP_ENV').'.env');
        $dotenv->overload();
    }
}});

Вот ссылка, где вы можете подробно узнать, как использовать несколько файлов env в laravel 5.8. Ссылка Ссылка

Наслаждайтесь кодированием.,,!!!

0 голосов
/ 28 февраля 2019

Хорошо, так что изменение этого хука на это, похоже, работает, я не совсем уверен, что это правильный подход, но копание в коде библиотеки кажется нормальным.

$hook['pre_system'] = function() {
$dotenv = Dotenv\Dotenv::create(__DIR__);
$dotenv->load();

Если это по какой-то причине не так, пожалуйстадай мне знать.Спасибо

...