Laravel Forge仅在4个已部署站点中的3个中检测环境变量

时间:2014-10-26 19:18:23

标签: php variables laravel environment laravel-forge

它们都配置相同。

环境肯定会投入生产。

根本没有读取数据库凭据 - 它想使用''@ localhost密码:NO作为默认值。

我设置

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => getenv('DB_HOST'),
    'database'  => getenv('DB_NAME'),
    'username'  => getenv('DB_USERNAME'),
    'password'  => getenv('DB_PASSWORD'),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

在app / config / database.php的所有4个站点中,我在forge中设置了相关的环境变量。我试过将环境字段留空,并输入'production'。我也尝试在database.php中使用$ _ENV ['environmentvariable']。

这给了我一个不同的未定义索引DB_HOST错误。很明显,env vars没有被阅读。

我把所有东西都拿下来并多次重新创建了repo和laravel服务器。所有其他3个站点配置相同。它使用

检测bootstrap / start中的环境
$env = $app->detectEnvironment(function()
{
    return getenv('ENV') ?: 'development';
});

我感谢任何帮助人员。它在宅基地上运行良好。

编辑:我可以在任何网站或数据库中进行伪造并做任何我想做的事情,除了问题之外任何一个php artisan命令都失败并且'拒绝访问''@ localhost密码:NO',即使我用--env =“production”运行它。

1 个答案:

答案 0 :(得分:2)

我不完全确定你是否在root上使用.env文件来指定不同的环境变量,但是在我自己完成之后我意识到,当环境是“本地”时它会读取'.env.local.php',当环境是“生产”时,它需要'.env.php'。

这是in the docs,但我几乎每次都忘了。我希望输入它会有所帮助。 :)