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


Laravel Forge detecting environment variables in only 3 of 4 deployed sites

它们的配置都是相同的。

环境肯定是生产环境。

数据库凭据根本不会被读取-它希望使用''@localhost-password: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中设置了相关的环境变量。我试着把environment字段留空,同时输入production。我还尝试在database.php.中使用$_ENV[环境变量]

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

我已经删除了所有内容,并多次重新创建repo和laravel服务器。所有3个其他站点的配置相同。它检测引导程序中的环境/使用启动

$env = $app->detectEnvironment(function()
{
    return getenv('ENV') ?: 'development';
});

我感谢你们的帮助。顺便说一句,它在宅地上运行良好。

edit:我可以ssh到forge中,也可以在任何站点或数据库中做任何我想做的事情,除了在问题中,任何php artisan命令都会失败,并显示"Access Denied for"@localhost password:NO",即使我使用--env="production"运行它也是如此。

我不完全确定你是否在根目录下使用.env文件来指定不同的环境变量,但在我自己经历了这些之后,我意识到当环境是"本地"时,它读的是".env.local.php",当环境是‘生产’时,它想要".env.php"。

它在文档中,但我几乎每次都忘记了。我希望把这个打出来会有所帮助。:)