Laravel 5 - env() always returns null

ぐ巨炮叔叔 提交于 2019-11-27 01:13:42

问题


I try to find out why my env() helper always returns null. This causes trouble especially in app.php file, where are env() helpers widely used by default. Perhaps any mysterious server setting?

My env file:

APP_ENV=production
APP_KEY=base64:mymagickey=
APP_DEBUG=false
APP_LOG_LEVEL=info
APP_URL=http://www.example.com

etc...

EDIT - I tried following:

php artisan cache:clear
php artisan view:clear
php artisan config:cache

and ofcourse, i am using env helper like this: env('APP_ENV')

But still no success. The wierd part is, that $_ENV php variable contains every single variable from .env file.


回答1:


env(...) function will not work after you cached the config. (starting from laravel 5.2 till current 5.7)

The Laravel documentation says

If you are using the config:cache command during deployment, you must make sure that you are only calling the env function from within your configuration files, and not from anywhere else in your application.

So the correct answer would be to

If you are calling env from within your application, it is strongly recommended you add proper configuration values to your configuration files and call env from that location instead, allowing you to convert your env calls to config calls.

And I quoted it from the same documentation

But for a quick fix this will do:

php artisan config:clear

And now it should be clear why, when you tried config:cache, it did not help, even though it clears the config prior to caching.




回答2:


Hope this command will save you

php artisan config:clear




回答3:


Five most important commands if your Laravel is not working as expected after some modifications in .env or database folder or because of any other modifications. Here is full explanation: https://www.youtube.com/watch?v=Q1ynDMC8UGg

php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
composer dump-autoload



回答4:


It is a ".env" known bug which can be solved with:

php artisan config:cache



回答5:


Use \Config::get('app.env'); instead of env(APP_ENV); because you're going to get the same error eventually and that's not good for a live website.

If you want to add custom variables from your ENV, go into your config app and find this:

/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),

add a new line under "'env' => env('APP_ENV', 'production'),", so for example, it could be the following:

/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),
'key' => env('APP_KEY'),

You can call the "key" variable like this:

\Config::get('app.key');

Whenever you add a new variable like "key" to the app env, you'll need to use config:cache to reset the cache.




回答6:


The following Command worked for me. I accidently cleared all the cache files, So env() was returning null.

php artisan optimize:clear



回答7:


Looks like there was installed old PHP version on server, which is not situable for Laravel's .env package to run properly. When I deployed website into a different server with PHP 7 installed, env() returned values as expected.



来源:https://stackoverflow.com/questions/43243732/laravel-5-env-always-returns-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!