Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 09.08.2018 23:12:33

Как получить env пременные через env('VAR_NAME')?

Добрый день,

Не могу получить доступ к переменным в файле .env напрямую. Строковые данные без кавычек.

Фрагмент файла:

COMPOSE_PROJECT_NAME=app

APP_NAME=string
APP_ENV=local
APP_KEY=base64:string/string/string=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DEBUGBAR_ENABLED=false

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=string
DB_USERNAME=postgres
DB_PASSWORD=postgres

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=string
MAIL_PASSWORD=string
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=

SMSC_DRIVER=string.com
SMSC_KZ_LOGIN=string@string.com
SMSC_KZ_PASSWORD=string
SMSC_KZ_URL=https://string.string/string/string.php

Сам сайт работает, и данные например подключения базы должны тянутся отсюда.

Ибо в файле /var/www/sitename/config/database.php pgsql я не трогал:

...
'pgsql' => [
            'driver' => 'pgsql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],
...

На любую попытку получить значение переменной, ловлю null:

Route::get('/test-mail',function (MailerInterface $mailer) {
    dump(env('MAIL_HOST'));
    dump(env('APP_NAME'));
    dump(config('APP_NAME'));
});

Почему не могу получить доступ к данным переменным и почему база при этом мне подвластна?

Не в сети

#2 10.08.2018 02:07:02

Re: Как получить env пременные через env('VAR_NAME')?

Попробуйте getenv('APP_NAME')

Не в сети

#3 10.08.2018 02:23:38

Re: Как получить env пременные через env('VAR_NAME')?

Благодарю,

исправил так:
php artisan config:clear

теперь норм. через env цепляется.

Но в unit тестах ни env ни getenv не работают((

Пусто


        fwrite(STDERR, print_r('YYYYYYYYYYYYYy', TRUE)); // YYYYYYYYYYYYYy
        fwrite(STDERR, print_r(getenv('APP_NAME'), TRUE)); // '' || null
        fwrite(STDERR, print_r(env('APP_NAME'), TRUE)); // '' || null

Не в сети

Подвал раздела