Laravel 4.2同一服务器上的环境

时间:2014-09-23 21:14:02

标签: php apache laravel laravel-4

我要将Laravel应用程序的多个实例部署到一个唯一的服务器上。每个实例都需要不同的数据库配置。基于主机名的默认Laravel环境配置对我不起作用,因为所有应用程序都将位于同一服务器上,因此无法确定要使用哪个配置文件。这是我的bootstrap/start.php文件:

$env = $app->detectEnvironment(array(

    'development' => array('Ariels-MacBook-Pro.local'),
    'server' => array('srv-hostname'),

));

我可以基于域定义环境(因为我的应用程序区域将位于不同的域),这很好,所以这样我就可以为每个域定义不同的配置(托管在同一台服务器上)< / p>

有什么想法吗?

2 个答案:

答案 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服务器而另一个用于生产,因为有“数据库连接”所以我用它来隐式编写环境。

玩得开心。