I added this variable to .env file
STRIPE_SECRET=a12345
I would like to dump the variable using routes/web.php
<?php
dd(env('STRIPE_SECRET'));
But it looks like it always returns null.
Update : Updated .env file. I only removed DB_PASSWORD.
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:08txDXXatyYsP5WQ4ECz35Q7OyBEe8Vgb/zK5fZsHik=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
APP_LOCALE=tr
APP_LC_ALL=tr_TR.utf8
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=gunluk
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
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=03ac580c85842d
MAIL_PASSWORD=1d6d902d296942
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
STRIPE=a123
STRIPE_SECRET=a12345
The main reason upon your issue is that you are caching your configuration. When running php artisan config:cache
you're storing your configuration in your cache, and the next time Laravel will boot up it won't read the .env
file because it detects that the configuration has been stored in the cache. Environment file should be used only to setup configuration files and then to access the value you're looking for you should use ONLY the config
method.
Let's assume that you have the file config/stripe.php
that consists of this content:
<?php
return [
'secret' => env('STRIPE_SECRET', '')
];
Once you run php artisan config:cache
access this value using ONLY the syntax config('stripe.secret')
through your application code. Every time you update your config files and your .env
you need to run php artisan config:cache
again.
You can clear configuration cache using following commands
php artisan config:clear
php artisan optimize
php artisan config:cache
Also make sure
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. 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.
Ref:
Updated:
Also make sure you have renamed .env.example
to .env file
by default laravel have .env.example
Updated 2
As per your new update question your env file have STRIPE
not STRIPE_SECRET
so you have access like this if its not typo error in question
env('STRIPE')
make sure you app is completely booted.
if you are running server with cmd then try restarting server.
and if it not works try clearing the cache using the methods above mentioned by @iCoders.
if you have STRIPE="a12345"
this in .env
file or if you any change in .env
file or config
file then you fallow these steps
one more thing write the variable value in comma's like STRIPE="a12345"
First run these commands
php artisan config:clear
php artisan cache:clear
composer dump-autoload
and finally used this command to get variable
dd(env('STRIPE'));
this working for me
and also 1 stupid suggestion: restart server
I have add all possible solution
First, there is no STRIPE_SECRET
inside your .env
file(As per before edit the question). So please make sure that your .env
must have this variable. You should clear your configuration cache by executing following commands in the same order
php artisan config:cache
php artisan config:clear
Laravel cache your configuration files so the execution become faster. So everytime when you change the configuration files on server, you should clear the cache.
Additionally you can run these commands also to clear the other caches
php artisan cache:clear //for clearing the cache
php artisan view:clear //for clearing the compiled views
php artisan route:clear //for clearing the routes cache
You can also create the routes for these commands and call the commands from the code also as
Route::get('/cache-clear', function() {
$exitCode = Artisan::call('cache:clear');
echo "Cache Cleard: ".$exitCode;
});
Route::get('/view-clear', function() {
$exitCode = Artisan::call('view:clear');
echo "View Cleard: ".$exitCode;
});
Route::get('/route-cache', function() {
$exitCode = Artisan::call('route:cache');
echo "Route Cached: ".$exitCode;
});
Route::get('/route-clear', function() {
$exitCode = Artisan::call('route:clear');
echo "Route Cache Cleared: ".$exitCode;
});
Route::get('/config-cache', function() {
$exitCode = Artisan::call('config:cache');
echo "Config Cached: ".$exitCode;
});
Route::get('/config-clear', function() {
$exitCode = Artisan::call('config:clear');
echo "Config Cache Cleared: ".$exitCode;
});
env(...)
function will return null after you cached the config. (starting from laravel 5.2 till current 5.7)
The documentation says
If you are using the
config:cache
command during deployment, you must make sure that you are only calling theenv
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