【问题标题】:Artisan unable to use $_SERVER variables from database config fileArtisan 无法使用数据库配置文件中的 $_SERVER 变量
【发布时间】:2013-01-02 22:52:43
【问题描述】:

我目前正在我的共享主机帐户上部署一个 Laravel 项目。它是一个开放项目,作为公共存储库托管在 GitHub 上。因此,我在生产环境的database.php 配置文件中使用由.htaccess 文件设置的动态变量。这使我还可以在我的主机上使用 git pull 命令更新我的部署,这有助于加快工作速度。

database.php 文件有类似的东西

$database = $_SERVER['DBNAME'];

$database_user = $_SERVER['DBUSER'];

这很像部署到 PagodaBox 时所做的事情,并且对于应用程序来说工作得非常好,所有东西在浏览器中都按预期运行,没有任何抱怨。

我遇到的问题是 artisan 无法使用这些变量,而是会尝试使用我认为在处理 migrate 指令时清空变量的方式连接到数据库。我收到一个错误,即工匠试图在没有密码的情况下连接到数据库。我一直在使用 --env=production 调用 artisan 并对此进行了测试,但发现它只有在 database.php 文件具有明确指定的变量而不是环境变量时才有效。

有没有办法让工匠“看到”这些环境变量?


到目前为止对我有用的答案:

http://forums.laravel.io/viewtopic.php?pid=8455

Environment driven database settings in Laravel?

【问题讨论】:

    标签: php .htaccess environment laravel


    【解决方案1】:

    因为 Artisan 是一个 CLI PHP 请求 - 请求永远不会命中 .htaccess 文件 - 因此永远不会设置您的变量。

    作为一种解决方法 - 您可以在 artisan 文件本身的第 3 行定义变量(就在 <?php 之后)

    $_SERVER['DBNAME'] = 'test';
    $_SERVER['DBUSER'] = 'something';
    

    编辑:我刚刚注意到您说这是在 github 上公开托管的 - 所以您不想在文件中包含您的用户名/密码?也许将工匠文件作为.gitignore 组的一部分 - 这样您就不会推/拉那个文件?

    【讨论】:

    • 啊,我明白了。是的,绝对不能将我的用户/通行证放入公共回购中。必须使用您的解决方案将其添加到忽略的文件列表中。谢谢!
    • 实际上考虑到这一点......任何需要为 github 项目做出贡献的人都需要工匠文件才能使用 laravel,因此将其排除在存储库中会适得其反......我要去有条件地要求工匠的配置文件并将该文件添加到忽略列表中。
    【解决方案2】:

    设置环境变量的功能是 Laravel 内置的,所以没有理由在 .htaccess 中这样做。 Laravel 的内置方式与工匠一起工作没有任何麻烦。

    请参阅文档的这一部分,了解您想要保护的环境变量。

    http://laravel.com/docs/configuration#protecting-sensitive-configuration

    引用:

    ...在项目的根目录中创建一个.env.local.php 文件[...] .env.local.php 应该返回一个键值对数组,很像典型的 Laravel 配置文件:

    <?php
    return array(
        'TEST_STRIPE_KEY' => 'super-secret-sauce',
    );
    

    此文件返回的所有键值对将自动通过 $_ENV 和 $_SERVER PHP“superglobals”可用。您现在可以在配置文件中引用这些全局变量:

    'key' => $_ENV['TEST_STRIPE_KEY']
    

    确保将.env.local.php 文件添加到您的.gitignore 文件中。这将允许您团队中的其他开发人员创建他们自己的本地环境配置,并从源代码管理中隐藏您的敏感配置项。

    添加您的私有环境变量

    <?php
    return array(
        'MY_SECRET_KEY' => 'super-secret-sauce',
    );
    

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2015-04-26
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 2018-07-23
      • 2021-02-27
      • 1970-01-01
      相关资源
      最近更新 更多