2014-10-09 56 views
1

好的,我从Laravel Docs得到多种环境。Laravel 4.1为网络和终端设置多种环境

这里是我的设置:

  • 当地环境
  • 临时服务器环境
  • 生产服务器

当地环境有从生产服务器不同的主机名很明显,然而临时服务器是生产服务器上的一个子域(所以dev.myapp.com vs myapp.com)。我也在本地使用myapp.dev作为我的虚拟主机名。

我已经设置切换enviornments以下:

$env = $app->detectEnvironment(function(){ 

if(strpos($_SERVER['HTTP_HOST'],'.dev') !== false) || strpos($_SERVER['HTTP_HOST'],'dev.') !== false) { 
    return 'local'; 
} 
return 'production'; 

});

这个差不多的作品。问题是我有一个单独的数据库设置用于我的开发/临时环境,这样我们就不会在暂存环境中显示或操作实时数据。这在终端下跌。当我运行php artisan env(在没有设置关于$_SERVER['HTTP_HOST']的警告消息之后)时,它显示为生产。

这意味着它不会通过终端在正确的数据库上运行迁移。

什么是更好的方法来引用它?

回答

3
php artisan --env=staging 

进一步的帮助是你需要什么,并添加isset($_SERVER['HTTP_HOST'])到检测代码,否则cli会投诉。

+0

会给这个尝试并回来。可能需要我几天的时间。谢谢 – TH1981 2014-10-17 17:14:06

-1

不知道你是否试过这个,但我会使用主机名而不是域名。在使用CLI类型hostname的登台服务器中,它会告诉您服务器的主机名。

您可以添加此来引导/ start.php

$env = $app->detectEnvironment(array(

    'local' => array('homestead'), // Change this to your local machine hostname. 
    'staging' => array('staging_hostame'), // staging server 
    'production' => array('your-production-machine-name'), 

)); 

让我现在如果你需要对这个:)

+0

谢谢,但我的主机名用于交错和生产与它们在同一台服务器上相同。 – TH1981 2014-10-17 17:13:30