2015-12-22 85 views
34

升级到Laravel 5.2后,我的.env文件值都没有被读取。我跟着upgrade instructions;除auth.php之外,我的配置文件都没有更改。他们在以前的版本中的所有工作正常,5.1.19Laravel 5.2没有阅读env文件

.env包含这样的值作为

DB_DATABASE=mydb 
DB_USERNAME=myuser 

config/database.php包含

'mysql' => [ 
    'database' => env('DB_DATABASE', 'forge'), 
    'username' => env('DB_USERNAME', 'forge'), 
] 

我得到这个错误:

PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO) 

显然不拉我的env配置。这影响了我的每一个配置文件,包括第三方,如bugsnag。

我也试过

php artisan config:clear 
php artisan cache:clear 

更新

试图php artisan tinker

>>> env('DB_DATABASE') 
=> null 
>>> getenv('DB_DATABASE') 
=> false 
>>> config('database.connections.mysql.database') 
=> "forge" 
>>> dd($_ENV) 
[] 

我试图安装Laravel 5.2的全新副本。我基本上只复制在我的“应用程序”文件夹中;不包括其他作曲家包。仍然有同样的问题。我有其他的Laravel 5.2项目在同一台服务器上工作正常。

+0

你确定.ENV文件只命名为.ENV?不是.env.example? –

+0

Andrew是通过伪造界面编辑.env文件还是上传它? –

+0

@JamesElliott是的'.env' – andrewtweber

回答

25

哇。好悲伤。这是因为我曾与它的空间的ENV价值,而不是用引号

包围这

SITE_NAME=My website 

更改为此

SITE_NAME="My website" 

固定它。我认为这与Laravel 5.2现在升级vlucas/phpdotenv从1.1.1升级到2.1.0有关

+0

中设置了什么。同样的想法 - 空间似乎在5.2中的'.env'中引起问题,而在5.1中则不然。 – thomthom

+3

这是Laravel的一个(很多)bugbears:它有一种习惯,有时会默默地忽略和接受各种配置和/或其他类型的错误,没有任何迹象表明任何错误。鉴于这可能是'phpdotenv'的一个“特征”,但是Laravel仍然知道需要包含一个'.env'文件,并且它没有成功,但是不想告诉任何人。 – dKen

13

如果您的任何.env变量包含空格,请确保将它们用双引号包装。例如:

SITE_NAME="My website"

不要忘记在测试前先清除缓存:

php artisan config:cache; 
php artisan config:clear; 
39

从官方Laravel 5.2升级说明:

If you are using the config:cache command during deployment, you must make sure that you are only calling the env function from within your configuration files, and not from anywhere else in your application.

If you are calling env from within your application, it is strongly recommended you add proper configuration values to your configuration files and call env from that location instead, allowing you to convert your env calls to config calls.

参考:https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0

+8

'php artisan config:cache'为我解决了 - 没有其他任何帮助。甚至没有'PHP的工匠配置:清除 - 谢谢! – kair

+7

Laravel 5.3'php artisan config:clear'是我工作的唯一东西 – Peon

+2

Laravel 5.4 - 部署在VPS上:'php artisan config:clear'为我工作。我之前没做配置:缓存,所以我不得不清除缓存看起来有点奇怪。 – Antonio

3

我错过了升级指导离子:

Add an env configuration option to your app.php configuration file that looks like the following: 'env' => env('APP_ENV', 'production')

添加此行使本地.env文件被正确读入。

+1

我想我得到了同样的错误,因为我的应用程序是Laravel 4,然后升级到5.0,然后升级到5.1等。可能会错过添加这个值在我的app.php中。谢谢你为我节省了很多时间。这是一个赞不绝口! –

14

我在config/services.php也有类似的问题,我解决了使用config clearoptimize命令:

php artisan config:clear 
php artisan optimize 
+1

优化为我做了窍门 – vivoconunxino

+0

优化为我而来。干杯!!! –

+0

为我感谢男士优化工作:D –

2

还额外什么@andrewtweber建议确保您没有KEY =之间的空间和,除非它是引号之间

.ENV文件,例如:

... 
SITE_NAME= My website 
MAIL_PORT= 587 
MAIL_FROM_NAME= websitename 
... 

到:

... 
SITE_NAME="My website" 
MAIL_PORT=587 
MAIL_FROM_NAME=websitename 
... 
4

简单性是电源:

php artisan config:cache 

你将得到:

配置缓存清除!

配置缓存成功!

2

我解决了这个问题,使用下面的命令生成一个新的密钥:php artisan key:generate

5

运行以下命令:

php artisan config:clear 
php artisan cache:clear 


php artisan config:cache

2

我碰到了同样的问题在我的地方,和我在这里尝试了所有的答案,但无济于事。只有这对我有用, php artisan config:clearrestart server。奇迹般有效!使用

+0

不,即使这不适用于我。 –

+0

@RameshMhetre尝试'PHP的工匠配置:缓存','PHP的工匠配置:清除然后'PHP的工匠缓存:清除' – dexterb

+1

谢谢,我有另一个问题。得到它修复,谢谢! –

1

删除缓存:

php artisan config:clear 
    php artisan config:cache 
+0

谢谢,它真的帮助我。祝好运 –