Php Laravel 4.1为web和;终端

Php Laravel 4.1为web和;终端,php,laravel-4,laravel-artisan,Php,Laravel 4,Laravel Artisan,好的,我从中得到了多个环境 以下是我的设置: 当地环境 暂存服务器环境 生产服务器 本地环境的主机名显然与生产服务器不同,但是临时服务器是生产服务器上的子域(因此dev.myapp.comvsmyapp.com)。我还在本地使用myapp.dev作为虚拟主机名 我已设置以下内容以切换环境: $env = $app->detectEnvironment(function(){ if(strpos($_SERVER['HTTP_HOST'],'.dev') !== false) || s

好的,我从中得到了多个环境

以下是我的设置:

  • 当地环境
  • 暂存服务器环境
  • 生产服务器
本地环境的主机名显然与生产服务器不同,但是临时服务器是生产服务器上的子域(因此
dev.myapp.com
vs
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
(在出现关于未设置
$\u服务器['HTTP\u HOST']]
的警告消息后)它显示为生产

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


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

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

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

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


是您所需要的,并向检测代码中添加
isset($\u SERVER['HTTP\u HOST'])
,否则cli会抱怨。

谢谢,但我的暂停主机名和生产主机名与它们在同一服务器上的主机名相同。我将尝试一下,然后返回。不过可能需要几天时间。谢谢
php artisan --env=staging