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



使用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"

我没有运行虚拟环境。

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

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

例如,你的.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基本上,secret会为.env文件生成一个解密密钥。因此,您只需要确保解密密钥的安全,并能够对.env文件进行版本控制。

最新更新