1

好的,我从Laravel Docs获得了多环境。

这是我的设置:

  • 当地环境
  • 登台服务器环境
  • 生产服务器

本地环境显然与生产服务器具有不同的主机名,但是登台服务器是生产服务器上的子域(所以dev.myapp.comvs myapp.com)。我也在myapp.dev本地用作我的虚拟主机名。

我设置了以下内容来切换环境:

$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'])它显示为生产。

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

有什么更好的方法来引用这个?

4

2 回答 2

3
php artisan --env=staging

是你需要的,并添加isset($_SERVER['HTTP_HOST'])到检测代码中,否则cli会报错。

于 2014-10-10T10:02:42.520 回答
-1

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

您可以将其添加到 bootstrap/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'),

));

如果您在这方面需要进一步的帮助,请告诉我:)

于 2014-10-10T09:58:40.523 回答