Laravel 4.2同一服务器上的环境

ari*_*lcr 2 php apache laravel laravel-4

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

$env = $app->detectEnvironment(array(

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

));
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

Ala*_*orm 6

Laravel的detectEnvironment方法有一个nify功能,你可以用一个闭包来progamatically确定当前的环境.例如,这会将Laravel配置为始终使用本地环境.

$env = $app->detectEnvironment(function()
{
    return 'local';
});
Run Code Online (Sandbox Code Playgroud)

域名应该在$ _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
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 安全吗?http://laravel.com/docs/4.2/upgrade出于安全原因,URL域可能不再用于检测您的应用程序环境.这些值很容易被欺骗,并允许攻击者修改请求的环境.您应该将环境检测转换为使用计算机主机名(Mac,Linux和Windows上的hostname命令). (2认同)