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

时间:2013-01-15 17:45:23

标签: php laravel laravel-3

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

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

php artisan foo --env=local

我已经成功地使用了工匠和bob,我不能承诺 foo ,我尝试更改为我的项目名称但总是相同的输出:“抱歉,我找不到那个任务。“

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

那将返回:“你忘了提供任务名称。”

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

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

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

再次感谢。

4 个答案:

答案 0 :(得分:11)

“Foo”是您想要运行的任何命令。例如。对于迁移:

php artisan migrate --env=local

您可以做的另一件事是将您的计算机主机名添加到this array

例如,如果我的本地计算机名称为'Effinity.local',我可以

$environments = array(
    'local' => array('http://localhost*', 'Effinity.local'),
);

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

php artisan migrate

希望有所帮助。

答案 1 :(得分:1)

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

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

其次,正如William Cahill-Manley所说,我需要处理app / paths.php,即$环境。我以前用过它但错误的方法。就我而言,我解决了这个问题:

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

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

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

并且因为开发阵列的第二个元素,在生产服务器中总是会在开发中。 这是因为开发时的网址为http://project/,而制作时的网址为http://project.com/http://user.project.com/

请参阅项目将强制所有环境通过星号/通配符进行开发。

答案 2 :(得分:0)

Foo是一个任务名称,尝试在任务文件夹中创建此文件,还有一些其他任务是预定义的,例如迁移等。

<?php 
    class foo_task {
    public function run(){
            echo 'this is foo';
        }
    } 
?>

然后当你运行命令时,它将运行run函数内的代码。

php artisan foo --env=local

答案 3 :(得分:0)

我建议您首先为Web应用程序设置基于名称的虚拟主机:

<VirtualHost *:80>
    ServerAdmin postmaster@localhost
    DocumentRoot "__PATH TO YOUR SERVER ROOT___/project/public/"
    ServerName project.dev
    ErrorLog "logs/project-error.log"
    CustomLog "logs/project-access.log" combined
</VirtualHost>

然后将project.dev添加到您的主机文件/private/etc/hosts,如下所示:

127.0.0.1 project.dev

不要忘记之后刷新DNS缓存:

$ dscacheutil -flushcache

然后将[project root]/path.php中找到的$ environments数组(您提到的applications / path.php文件不存在)修改回原来的状态。原始* .dev通配符将在您提供的网址末尾获取.dev。

$environments = array(

    'local' => array('http://localhost*', '*.dev'),

);

然后在名为applications/config/的{​​{1}}中创建一个目录,在新目录中放置一个名为local的文件。此文件中给出的配置将覆盖由您创建的application.php目录的父级中给出的相应配置文件和设置/值设置的配置。