php-Laravel 5.2无法读取env fi

升级到Laravel 5.2后,没有读取我的php artisan tinker文件值。 我遵循了升级说明; 除auth.php外,我的所有配置文件均未更改。 它们在以前的版本5.1.19中都正常工作

php artisan tinker包含以下值

DB_DATABASE=mydb
DB_USERNAME=myuser

php artisan tinker包含

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

我收到此错误:

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

显然没有拉入我的环境配置。 这正在影响我的每个配置文件,包括第三方(例如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的新副本。 我基本上只复制到我的“ app”文件夹中; 不包括其他作曲家软件包。 仍然有同样的问题。 我在同一台服务器上还有其他运行良好的Laravel 5.2项目。

21个解决方案
60 votes

从官方的Laravel 5.2升级说明中:

如果在部署期间使用env命令,则您   必须确保您仅从内部调用env函数   您的配置文件,而不是从您的其他任何地方   应用。

如果从应用程序内部调用env,则强烈建议   建议您在配置中添加适当的配置值   文件,然后从该位置调用env,允许您进行转换   您的env呼叫至config呼叫。

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

Gaurav Gupta answered 2019-10-09T03:50:39Z
39 votes

如果您的SITE_NAME="My website"变量中的任何一个包含空格,请确保将它们用双引号引起来。 例如:

SITE_NAME="My website"

测试之前,请不要忘记清除缓存:

php artisan config:cache
php artisan config:clear
benjolly1989 answered 2019-10-09T03:51:18Z
35 votes

哇。 真是的 这是因为我有一个env值,其中带有一个空格,没有用引号引起来

这个

SITE_NAME=My website

改成这个

SITE_NAME="My website"

修复。 我认为这与Laravel 5.2现在将vlucas / phpdotenv从1.1.1升级到2.1.0有关

andrewtweber answered 2019-10-09T03:52:04Z
20 votes

我在config/services.php中遇到了类似的问题,并使用config clearoptimize命令解决了:

php artisan config:clear
php artisan optimize
Deric Lima answered 2019-10-09T03:52:31Z
13 votes

运行这个:

php artisan config:clear
php artisan cache:clear

然后
php artisan config:cache

Ganesh K answered 2019-10-09T03:53:05Z
8 votes

当您发出命令php artisan config:cache时,它将清除所有env变量,并且env()将给出空值,尝试运行以下跟随命令,并在那儿动臂,您的env()再次开始捕捉所有env变量

php artisan config:clear
Shahrukh Anwar answered 2019-10-09T03:53:33Z
8 votes

我在本地环境上遇到了同样的问题,

  1. PHP的工匠配置:清除
  2. PHP的工匠配置:缓存
  3. 然后取消php artisan serve命令,然后再次重新启动。
jay_mziray answered 2019-10-09T03:54:20Z
7 votes

简单就是力量:

php artisan config:cache

您将收到:

配置缓存已清除!

配置成功缓存!

Adam Kozlowski answered 2019-10-09T03:55:08Z
6 votes

我在升级说明中错过了这一点:

将环境配置选项添加到.env配置文件中,如下所示:   'env' => env('APP_ENV', 'production')

添加此行可以正确读取本地.env文件。

dKen answered 2019-10-09T03:55:48Z
5 votes

使用以下方法删除缓存:

    php artisan config:clear
    php artisan config:cache
Diego Santa Cruz Mendezú answered 2019-10-09T03:56:17Z
3 votes

除了@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
...
Waqleh answered 2019-10-09T03:56:53Z
3 votes

我在本地遇到了同样的问题,并且在这里尝试了所有答案,但无济于事。 只有这对我有用php artisan config:clearrestart server。就像魅力一样!

Dexter Bengil answered 2019-10-09T03:57:23Z
3 votes

当:port在本地.env中时,也会发生同样的事情

再次使用双引号可以解决问题

APP_URL="http://localhost:8000"

然后

php artisan config:clear
Stavros answered 2019-10-09T03:58:00Z
2 votes

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

Angel Prieto answered 2019-10-09T03:58:30Z
2 votes

如果您在本地开发过程中确实调用了config:cache,则可以通过删除bootstrap / cache / config.php文件来撤消此操作。 这对我来说是工作。

Payal Pandav answered 2019-10-09T03:58:59Z
2 votes

对我来说,它按以下顺序工作:

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

而且我尝试了所有其他方法而没有运气。

TrOnNe answered 2019-10-09T03:59:34Z
0 votes

如果在控制台上运行此php artisan config:cache命令,则它将所有.env文件内容存储在高速缓存中,在此命令之后,如果将任何内容附加到.env文件中,则在您运行php artisan config:clear命令之前它将不可用

Chandrakant Ganji answered 2019-10-09T04:00:04Z
0 votes

我经历了 原因是apache(用户www-data)由于文件权限而无法读取.env。因此,我更改了文件权限,以确保服务器(Apache)具有对该文件的读取权限。 就这样,繁荣起来,现在一切正常!

gthuo answered 2019-10-09T04:00:33Z
0 votes

我在index.php文件中执行dd / die / dump时犯了错误。 这将导致系统无法重新生成配置。

只需在视图文件中转储即可。 对.env文件的更改会立即更新。

Bing Han answered 2019-10-09T04:01:10Z
0 votes

如果您在本地开发过程中确实调用了config:cache,则可以通过删除bootstrap / cache / config.php文件来撤消此操作。 这对我来说是工作。

@Payal Pandav在上面给出了评论。

我想告诉一个简单的解决方法。 只需在bootstrap / cache /文件夹中编辑config.php文件。 并更改凭据。 这对我有用。 请不要删除此文件,因为它可能在生产环境中包含其他关键数据。

Daya Satheesh answered 2019-10-09T04:01:49Z
0 votes

对我来说,以下工作

  • PHP的工匠配置:缓存
  • PHP的工匠配置:清除
  • PHP的工匠缓存:清除
beatusfk answered 2019-10-09T04:02:29Z
translate from https://stackoverflow.com:/questions/34420761/laravel-5-2-not-reading-env-file