Laravel .env变量始终返回null
Laravel .env变量始终返回null
我将该变量添加到.env文件中:
STRIPE_SECRET=a12345
我想使用routes/web.php来显示该变量:
但是看起来它总是返回null。
更新:更新了.env文件。我只移除了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
Laravel .env变量始终返回null的问题产生的原因是在.env文件中的变量值没有正确设置,导致无法正确获取变量。解决方法是按照以下步骤进行操作:
1. 在.env文件中,确保变量值使用双引号括起来,例如:STRIPE="a12345"。
2. 运行以下命令进行配置和缓存清除:
- php artisan config:clear
- php artisan cache:clear
- composer dump-autoload
3. 最后,使用以下命令获取变量值:
- dd(env('STRIPE'));
4. 如果问题仍然存在,尝试重启服务器。
总结以上解决方法,按照正确的格式设置.env文件中的变量值,并进行配置和缓存清除操作,最后使用env()函数获取变量值,这样就可以解决Laravel .env变量始终返回null的问题。
问题的原因是.env文件中没有STRIPE_SECRET变量。解决方法是确保.env文件中存在这个变量,并按照以下顺序执行清除配置缓存的命令:
php artisan config:cache php artisan config:clear
Laravel会缓存配置文件以提高执行速度,所以每当您在服务器上更改配置文件时,都应该清除缓存。
此外,您还可以运行以下命令来清除其他缓存:
php artisan cache:clear //清除缓存 php artisan view:clear //清除已编译的视图 php artisan route:clear //清除路由缓存
您还可以为这些命令创建路由,并从代码中调用这些命令,如下所示:
Route::get('/cache-clear', function() { $exitCode = Artisan::call('cache:clear'); echo "Cache Cleared: ".$exitCode; }); Route::get('/view-clear', function() { $exitCode = Artisan::call('view:clear'); echo "View Cleared: ".$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; });
通过以上方法,您可以在代码中创建路由,并调用这些命令来清除缓存。
Laravel .env变量总是返回null的原因是因为你在缓存配置。当运行php artisan config:cache
命令时,你的配置会存储在缓存中,下次Laravel启动时,它不会读取.env
文件,因为它检测到配置已经被存储在缓存中。环境文件应该仅用于设置配置文件,然后在访问所需值时,应该仅使用config
方法。
假设你有一个文件config/stripe.php
,内容如下:
<?php return [ 'secret' => env('STRIPE_SECRET', '') ];
一旦你运行了php artisan config:cache
命令后,你可以通过config('stripe.secret')
语法访问该值。每次更新配置文件和.env
文件后,你都需要再次运行php artisan config:cache
命令。