我的 .env 文件中没有读取在 shell 中声明的环境变量

时间:2021-05-17 14:57:26

标签: php symfony environment-variables

使用 Windows 10

php bin/console make:migration

In AbstractMySQLDriver.php line 112:

  An exception occurred in driver: SQLSTATE[HY000] [1045] Access denied for user 'db_user'@'localhost
  ' (using password: YES)


In Exception.php line 18:

  SQLSTATE[HY000] [1045] Access denied for user 'db_user'@'localhost' (using password: YES)


In PDOConnection.php line 39:

  SQLSTATE[HY000] [1045] Access denied for user 'db_user'@'localhost' (using password: YES)

.env 文件

DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"

我尝试在我的 shell 和 .env 文件中定义我的环境变量

set db_user=root
set db_password=12345678
set db_name=loremipsum

我让它工作的唯一方法是像这样对我的变量进行硬编码:

DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"

我没有运行虚拟环境。

1 个答案:

答案 0 :(得分:0)

从您粘贴的内容来看,您的 .env 文件似乎不包含您的数据库连接信息。

.env 文件中的 DATABASE_URL 应包含所有连接信息。那里没有对 shell env 变量的解释。因此,它不会将 db_user 转换为 .env 中的“root”。

例如,您的.env 应该是这样的。您也可以在 .env

中省略双引号
DATABASE_URL=mysql://root:12345678@127.0.0.1:3306/loremipsum?serverVersion=5.7

也许您不喜欢将您的凭据存储在该文件中。 Symfony 为您提供了解决方案,秘密。 https://symfony.com/doc/current/configuration/secrets.html 基本上,secrets 会为你的 .env 文件生成一个解密密钥。因此,您只需要保护解密密钥并能够对您的 .env 文件进行版本控制。