我在使用伪造和环境变量方面遇到了麻烦。当我使用getenv('DB_NAME')
时,我会在尝试迁移时遇到连接问题。当我var_dump
BaseController.php中的值时,我得到了正确的值。但仍然没有工作。如果我改为在database.php
配置文件中写入给定var_dump的值,我就可以了。但是,当价值观正确时,为什么地狱不能与getenv合作?
在我的BaseController.php中:
var_dump(getenv('DB_HOST'));
var_dump(getenv('DB_NAME'));
var_dump(getenv('DB_USERNAME'));
var_dump(getenv('DB_PASSWORD'));
在我的database.php中:
'host' => getenv('DB_HOST'),
'database' => getenv('DB_NAME'),
'username' => getenv('DB_USERNAME'),
'password' => getenv('DB_PASSWORD'),
使用此代码,我收到错误消息:
[PDOException]
SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO)
如果我改写我从BaseController.php中的var_dumps得到的值,一切正常。有什么想法吗?
答案 0 :(得分:3)
确保您的env文件名为.env.php
,而不是.env.production.php
。我犯了这个错误,虽然.env.production.php
会在应用中运行,但在使用Artisan时却不会。
在Forge中创建env变种时,如果它适用于生产环境,请确保将环境字段留空,而不是明确将其设置为生产。