我将此变量添加到.env文件
STRIPE_SECRET = A12345
我想使用routes / web.php转储变量
<?php
dd(env('STRIPE_SECRET'));
但它看起来总是返回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
答案 0 :(得分:9)
首先,STRIPE_SECRET
文件中没有.env
(按编辑问题之前)。因此,请确保您的.env
必须拥有此变量。您应该通过以相同的顺序执行以下命令来清除配置缓存
php artisan config:cache
php artisan config:clear
Laravel缓存配置文件,以便更快地执行。因此,每次更改服务器上的配置文件时,都应清除缓存。
此外,您还可以运行这些命令以清除其他缓存
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
您还可以为这些命令创建路径,并从代码中调用命令
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;
});
答案 1 :(得分:7)
您遇到问题的主要原因是您正在缓存您的配置。运行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
。
答案 2 :(得分:4)
如果你有
STRIPE="a12345"
文件中的.env
或.env
文件或config
文件中的任何更改,您可以执行以下步骤
还有一件事用逗号形式写变量值,如STRIPE="a12345"
首先运行这些命令
php artisan config:clear
php artisan cache:clear
composer dump-autoload
最后使用此命令获取变量
dd(env('STRIPE'));
这对我有用
还有一个愚蠢的建议:重启服务器
我添加了所有可能的解决方案
答案 3 :(得分:3)
您可以使用以下命令清除配置缓存
php artisan config:clear
php artisan optimize
php artisan config:cache
还要确保
如果在部署期间使用config:cache
命令,则必须确保仅从配置文件中调用env函数,而不是从应用程序中的任何其他位置调用。
如果从应用程序中调用env,强烈建议您在配置文件中添加正确的配置值,并从该位置调用env,允许您将env调用转换为config调用。
价:
<强>更新强>
另外,请确保您已将.env.example
重命名为.env file
,默认情况下laravel已.env.example
Updated 2
根据您的新更新问题,您的环境文件有STRIPE
而不是STRIPE_SECRET
所以如果它没有错误的拼写错误
env('STRIPE')
答案 4 :(得分:1)
确保您的应用已完全启动。
如果您使用cmd运行服务器,请尝试重新启动服务器。
如果不起作用,请尝试使用@iCoders上面提到的方法清除缓存。
答案 5 :(得分:1)
env(...)
函数将在您缓存配置后返回null。 (从laravel 5.2到当前的5.7)
如果在部署过程中使用
config:cache
命令,则必须确保仅从配置文件中调用env
函数,而不从应用程序中的其他任何位置调用{1}。 >
所以正确的答案应该是
如果要从应用程序内部调用env,则强烈建议您向配置文件中添加适当的配置值,然后从该位置调用env,从而使您可以将env调用转换为配置调用。
我引用了同一documentation
但是要快速修复,可以这样做:
php artisan config:clear
答案 6 :(得分:0)
我不建议使用env('STRIPE')命令来获取变量。在循环中,此命令在某些迭代后开始返回null。因此,最好创建一个配置文件并使用命令“ config('file_name.variable_name)”:
<?php
return [
'sprite_secret' => env('STRIPE_SECRET', '')
];
首先运行这些命令
php artisan config:cache
php artisan config:clear
并使用此命令获取STRIPE_SECRET变量的值:
config('config_file.sprite_secret)