【发布时间】:2014-10-16 17:40:41
【问题描述】:
我在使用 forge 和环境变量时遇到问题。当我使用getenv('DB_NAME') 时,我在尝试迁移时遇到连接问题。当我var_dump BaseController.php 中的值时,我的值是正确的。但仍然无法正常工作。如果我改为将给定 var_dump 中的值写入 database.php 配置文件中,我会得到它的工作。但是,当值正确时,为什么它不能与 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)
如果我改为将我从 var_dumps 中获得的值写入 BaseController.php,一切正常。有什么想法吗?
【问题讨论】:
-
您是在面板中设置了这些变量还是编辑了 .env.php 文件?
-
我很确定我已经完成了几乎所有事情。尝试时,但首先我将它们放在面板上。然后我一直在尝试编辑 .env.php 文件但没有结果。每次尝试运行迁移时都会出现相同的 PDOException。
-
你不能手动编辑它,它不起作用。我已经要求泰勒让我们这样做,因为它更简单。关于您的问题:您必须确保您的应用程序设置为生产,因为 .env.php 用于生产,而 .env.testing.php 用于测试。如果您的应用程序以某种方式处于测试/开发/本地状态,它将不会加载该 .env.php 文件。
-
Sweet,是否有可能因为我已经编辑过该文件而出现错误?我的意思是文件是否有可能因为我曾经手动编辑过而损坏或类似?
App::environment()设置为您要求的production。所以这是对的。 -
它不会真正损坏该文件,只是不会加载它。如果您再次在 Forge 中编辑它们,您的文件将被覆盖。那里发生的事情很奇怪。
标签: database laravel laravel-4 environment-variables laravel-forge