【问题标题】:Laravel 4 with forge, environment variables issueLaravel 4 with forge,环境变量问题
【发布时间】: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


【解决方案1】:

确保您的 env 文件名为 .env.php 而不是 .env.production.php。我犯了这个错误,虽然 .env.production.php 可以在应用程序中使用,但在使用 Artisan 时却不行。

在 Forge 中创建环境变量时,如果是用于生产环境,请务必将环境字段留空,而不是将其显式设置为生产环境。

【讨论】:

    猜你喜欢
    • 2015-06-13
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2014-12-22
    • 2021-05-19
    • 2013-07-28
    相关资源
    最近更新 更多