2017-09-23 94 views
1

我加入这个变量.ENV文件Laravel .ENV变量总是返回null

STRIPE_SECRET = A12345

我想使用的路由转储变量/ 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 
+3

尝试运行以下命令php artisan config:clear和 php artisan optimize – iCoders

+0

您确定您的应用程序密钥?运行'php artisan key:generate'来确认,然后重试。 – tptcat

+0

重新生成密钥后仍然返回null。 – Erdem

回答

1

主要您的问题的原因是您正在缓存您的配置。在运行php artisan config:cache时,您将配置存储在缓存中,并且下次Laravel启动它时将不会读取.env文件,因为它检测到配置已存储在缓存中。环境文件应该仅用于设置配置文件,然后访问您要查找的值只能使用config方法。

让我们假设你有一个包含这个内容的文件config/stripe.php

<?php 

return [ 
    'secret' => env('STRIPE_SECRET', '') 
]; 

一旦你通过你的应用程序代码只使用语法config('stripe.secret')运行php artisan config:cache访问此值。每当你更新你的配置文件和你的.env你需要再次运行php artisan config:cache

1

可以使用下面的命令

php artisan config:clear 
    php artisan optimize 
    php artisan config:cache 

还要确保清除配置缓存

如果您正在使用部署在config:cache命令,你必须确保你只调用ENV功能从您的配置文件中,而不是从您的应用程序的其他任何地方。 如果您在应用程序中调用env,强烈建议您将正确的配置值添加到配置文件中,并从该位置调用env,以允许将env调用转换为配置调用。

编号:

https://laracasts.com/discuss/channels/general-discussion/laravel-5-environment-detection-not-working?page=1

更新时间:

另外,还要确保你已经默认laravel改名.env.example.env file.env.example

Updated 2 

根据你新的更新问题你的env文件有STRIPESTRIPE_SECRET 让你有这样的访问,如果它没有问题错字错误

env('STRIPE') 
+0

Still routes/web.php返回null。 – Erdem

+0

你确定你有.env文件没有.env.example – iCoders

+0

当然,我有一个.en v文件。 – Erdem

1

确保你的应用程序完全启动。

如果您使用cmd运行服务器,请尝试重新启动服务器。

如果不起作用,请尝试使用@iCoders上面提到的方法清除缓存。

+0

我应该如何启动应用程序。这个应用程序在我自己的服务器上运行,因此最近重新启动 – Erdem

+0

它仍然不能正常工作? –

+0

您试图获取变量的位置 –

1

如果你有 STRIPE="a12345".env文件,或者如果您在.env文件或config文件中的任何改变,那么你休耕这些步骤

一件事写在逗号的变量值像STRIPE="a12345"

首先运行这些命令

  1. php artisan config:clear
  2. php artisan cache:clear

  3. composer dump-autoload

,最后用这个命令来获取变量

dd(env('STRIPE')); 

这个工作对我来说

而且1愚蠢的建议:重新启动服务器

我已添加所有可能的解决方案

1

首先,您的.env文件中没有STRIPE_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; 
});