我要将Laravel应用程序的多个实例部署到一个唯一的服务器上。每个实例都需要不同的数据库配置。基于主机名的默认Laravel环境配置对我不起作用,因为所有应用程序都将位于同一服务器上,因此无法确定要使用哪个配置文件。这是我的bootstrap/start.php
文件:
$env = $app->detectEnvironment(array(
'development' => array('Ariels-MacBook-Pro.local'),
'server' => array('srv-hostname'),
));
我可以基于域定义环境(因为我的应用程序区域将位于不同的域),这很好,所以这样我就可以为每个域定义不同的配置(托管在同一台服务器上)< / p>
有什么想法吗?
答案 0 :(得分:6)
Laravel的detectEnvironment
方法具有nify功能,您可以使用闭包以progamatically方式确定当前环境。例如,这会将Laravel配置为始终使用本地环境。
$env = $app->detectEnvironment(function()
{
return 'local';
});
域名应该在$ _SERVER中的某个地方,所以像这个未经测试的伪代码应该可以得到你想要的东西。
$env = $app->detectEnvironment(function()
{
switch($_SERVER['HTTP_HOST'])
{
case: 'example.com':
return 'production';
case: 'another.example.xom':
return 'production';
default:
return 'local'; //default to local
}
});
答案 1 :(得分:0)
我的选项,在文件app/config/database.php
中添加此行
'enviorement' => 'local',
// 'enviorement' => 'development', // this is for dev
// 'enviorement' => 'production', // this is for production
然后使用此
从您的控制器进行访问 $env = Config::get('database.enviorement');
echo $env;
database.php
文件不同,你有本地另一个用于developpemet服务器而另一个用于生产,因为有“数据库连接”所以我用它来隐式编写环境。
玩得开心。