Php env变量始终返回null
我将此变量添加到.env文件中 STRIPE_SECRET=a12345 我想使用routes/web.php转储变量Php env变量始终返回null,php,laravel,laravel-5,Php,Laravel,Laravel 5,我将此变量添加到.env文件中 STRIPE_SECRET=a12345 我想使用routes/web.php转储变量 <?php dd(env('STRIPE_SECRET')); 您可以使用以下命令清除配置缓存 php artisan config:clear php artisan optimize php artisan config:cache 还要确保 如果在部署期间使用config:cache命令,则必须确保仅从配置文件中调用env函数,而不是从应用程序中的任何其他位置
<?php
dd(env('STRIPE_SECRET'));
您可以使用以下命令清除配置缓存
php artisan config:clear
php artisan optimize
php artisan config:cache
还要确保
如果在部署期间使用config:cache
命令,则必须确保仅从配置文件中调用env函数,而不是从应用程序中的任何其他位置调用。
如果您是从应用程序中调用env,强烈建议您向配置文件中添加适当的配置值,并从该位置调用env,从而将env调用转换为config调用
参考:
更新1:
另外,请确保默认情况下已将.env.example
重命名为.env file
laravel have.env.example
更新2
根据您的新更新问题,您的env文件具有条带
非条带(机密
所以,如果不是有问题的打字错误,你可以这样访问
env('STRIPE')
确保你的应用程序已完全启动 如果您使用cmd运行服务器,请尝试重新启动服务器 如果不起作用,请尝试使用@iCoders上面提到的方法清除缓存。如果有
STRIPE=“a12345”
在.env
文件中,或者如果在.env
文件或config
文件中有任何更改,则可以暂停这些步骤
还有一件事,用逗号写变量值,比如STRIPE=“a12345”
首先运行这些命令
1. php artisan config:clear
2. php artisan cache:clear
3. composer dump-autoload
最后使用这个命令来获取变量
dd(env('STRIPE'));
这对我有用吗
还有一个愚蠢的建议:重启服务器
我已经添加了所有可能的解决方案首先,您的
.env
文件中没有STRIPE\u SECRET
(与编辑问题之前一样)。因此,请确保您的.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;
});
出现问题的主要原因是您正在缓存配置。运行
php artisan config:cache
时,您正在将配置存储在缓存中,下次Laravel启动时,它不会读取.env
文件,因为它检测到配置已存储在缓存中。环境文件应仅用于设置配置文件,然后要访问要查找的值,应仅使用config
方法
假设您有一个包含以下内容的文件config/stripe.php
:
<?php
return [
'secret' => env('STRIPE_SECRET', '')
];
缓存配置后,env(…)
函数将返回null。(从laravel 5.2开始到当前5.7)
警察说
如果在部署期间使用config:cache
命令,则必须确保仅从配置文件中调用env
函数,而不是从应用程序中的任何其他位置调用
所以正确的答案是
如果您是从应用程序中调用env,强烈建议您向配置文件中添加适当的配置值,并从该位置调用env,从而将env调用转换为config调用
我引用了同样的话
但对于快速修复,这可以做到:
php artisan配置:清除
我不建议使用env('STRIPE')命令来获取变量。在循环中,该命令在迭代后开始返回null。因此,最好创建一个配置文件并使用命令“config('file\u name.variable\u name)”:
并使用此命令获取STRIPE_SECRET变量的值:
config('config_file.sprite_secret)
尝试运行以下命令php artisan config:clear和php artisan Optimization您确定有应用程序密钥吗?运行php artisan key:generate
以确保,然后重试。您能否回答以下问题:您的.env文件放在哪里?您是否尝试过执行env(“STRIPE”)
调用修补程序?其他环境参数也可以工作(如env(“APP_NAME”)
?因此,基本上可能是这样的事实:配置是缓存的,而环境值不是从.env
文件加载的。始终通过config
方法访问您内部的环境变量。要测试该变量,请仅运行命令php artisan config:clear
,然后重试上述测试可能重复的静态路由/web.php返回null。你确定你有.env文件而不是.env.example确保我有一个.env文件.okat。我已经尝试了env方法它对我有效。奇怪的eRoom你能访问其他db信息吗我应该如何启动应用程序。这个应用程序在我自己的服务器上运行,所以最近重新启动。在你尝试获取变量的地方它仍然不起作用。我尝试获取routes/web.phpSeems行中的变量u在.env not STRIPE\u SECRET中有STIPE key,似乎在上面提到的.env文件中没有STRIPE\u SECRET。它的STRIPE我想你想让它为我工作。重复尝试步骤1和2(来自其他建议),但直到我尝试了第3步才起作用。除了运行php artisan config:cache。如果需要,假设我在.env文件中有一行API_DOMAIN=,我应该将哪一行放在哪个文件中?我应该用什么替换我的env('API_DOMAIN')调用?如果您懒惰,请将其放入\config\app.php
,如果您觉得正在制作一个新的api服务连接器,请使用\config\services.php
,如果您觉得这是件大事-crea
<?php
return [
'sprite_secret' => env('STRIPE_SECRET', '')
];
php artisan config:cache
php artisan config:clear
config('config_file.sprite_secret)