如何使用laravel artisan设置env以拥有两个不同的数据库连接(本地/远程)?

Luc*_*fim 8 php laravel laravel-3

我正在寻找使用Laravel3设置多环境项目,但我不理解设置环境的命令.

我在这里看到:http://laravel.com/docs/artisan/commands 命令是:

php artisan foo --env=local
Run Code Online (Sandbox Code Playgroud)

我已经成功地使用了工匠和bob,我不能承担foo,我尝试改变我的项目名称,但总是输出相同的结果:"抱歉,我找不到那个任务."

如果我尝试:php artisan --env = local

这将返回:"你忘了提供任务名称."

有人可以帮忙吗?谢谢你的时间.

[编辑]现在有了答案,我可以更好地理解并改进我的问题:

我有一个创建了这些文件夹的项目:http://d.pr/i/5nZS考虑 到这一点,我需要将我的本地环境设置为开发和生产作为生产.所以,我可以用命令"php artisan --env = local"的任何变体来做到这一点,或者我需要添加我的public/.htaccess"SetEnv LARAVEL_ENV开发"?

再次感谢.

Wil*_*ley 11

"Foo"是您想要运行的任何命令.例如,迁移:

php artisan migrate --env=local
Run Code Online (Sandbox Code Playgroud)

您可以做的另一件事是将计算机主机名添加到此阵列

例如,如果我的本地计算机名称是'Effinity.local',我可以这样做

$environments = array(
    'local' => array('http://localhost*', 'Effinity.local'),
);
Run Code Online (Sandbox Code Playgroud)

然后您不需要指定环境,只需:

php artisan migrate
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.


Luc*_*fim 1

在这里,我是如何解决我的问题的:

首先,我不需要命令php artisan migrate --env=local,我只需要在我的虚拟主机上设置:SetEnv LARAVEL_ENV development

其次,正如 William Cahill-Manley 所说,我需要处理 application/paths.php,即 $environments。我以前也用过,但是方法不对。就我而言,我解决了这个问题:

$environments = array(
    'development' => array('http://localhost/project*', '*project/*'),
    'production' => array('http://project.com', 'http://*.project.com')
);
Run Code Online (Sandbox Code Playgroud)

我的问题是因为我之前的代码是这样的:

$environments = array(
    'development' => array('http://localhost/project*', '*project*'),
    'production' => array('http://project.com', 'http://*.project.com')
);
Run Code Online (Sandbox Code Playgroud)

并且因为开发数组的第二个元素,在生产服务器中始终会处于开发中。那是因为开发上的 url 是http://project/,生产上的 url 是http://project.com/http://user.project.com/

看,该项目将强制在所有环境中通过星号/通配符进行开发。