Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php env变量始终返回null_Php_Laravel_Laravel 5 - Fatal编程技术网

Php env变量始终返回null

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函数,而不是从应用程序中的任何其他位置

我将此变量添加到.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函数,而不是从应用程序中的任何其他位置调用。 如果您是从应用程序中调用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)