Как настроить env с помощью laravel artisan для двух разных подключений к базе данных (локальное/удаленное)?

Я ищу настройку проекта с несколькими средами с использованием Laravel3, но я не понимаю команду для установки среды.

Я вижу здесь: http://laravel.com/docs/artisan/commands Команда:

php artisan foo --env=local

Я уже успешно использовал artisan и bob, но не могу понять foo, пытаюсь изменить имя своего проекта, но всегда одно и то же: "Извините, я не могу найти эту задачу. "

Если я попробую: php artisan --env=local

Это вернет: «Вы забыли указать имя задачи».

Кто-нибудь может помочь? Спасибо за ваше время.

[edit] Теперь, когда я получил ответы, я могу лучше понять и улучшить свой вопрос:

У меня есть проект с этими созданными папками: http://d.pr/i/5nZS С этим в Имейте в виду, мне нужно установить мой локальный env как разработку и производство как производство. Итак, я могу сделать это с любой вариацией команды «php artisan --env=local» или мне нужно добавить в свой public/.htaccess «SetEnv LARAVEL_ENV development»?

Спасибо еще раз.


person Lucas Serafim    schedule 15.01.2013    source источник


Ответы (4)


«Foo» — это любая команда, которую вы хотите запустить. Например. для миграций:

php artisan migrate --env=local

Вы также можете добавить имя хоста вашего компьютера в этот массив.

Например, если имя моего локального компьютера — «Effinity.local», я мог бы сделать

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

Тогда вам не нужно указывать среду, просто:

php artisan migrate

Надеюсь, это поможет.

person William Cahill-Manley    schedule 15.01.2013
comment
Итак, на моем локальном компьютере мне нужно установить: $ php artisan migrate --env=development И на рабочем сервере: $ php artisan migrate --env=production С этим и моим массивом следующим образом: gist.github.com/4557659 А также с моими папками конфигурации, настроенными следующим образом: d.pr/i/5nZS Это сработает? Я пробовал, но все еще кажется, что это не работает, то, что я также пробовал, - это разработка SetEnv LARAVEL_ENV, которая почти работает, но мне нужно немного больше времени, чтобы попробовать еще раз. Спасибо за ответ. - person Lucas Serafim; 17.01.2013

Вот как я решил свой вопрос:

Сначала мне не нужна была команда php artisan migrate --env=local, мне просто нужно установить на моем виртуальном хосте: SetEnv LARAVEL_ENV development.

Во-вторых, как сказал Уильям Кэхилл-Мэнли, мне нужно поработать над application/paths.php, $environments. Я использовал его раньше, но неправильно. В моем случае я решаю это:

$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')
);

И поскольку второй элемент массива разработки на рабочем сервере всегда будет в разработке. Это потому, что URL-адрес для разработки будет http://project/, а для производства будет http://project.com/ или http://user.project.com/.

Видите ли, проект заставит во всех средах развиваться по звездочке/шаблону.

person Lucas Serafim    schedule 20.01.2013

Foo - это имя задачи, попробуйте создать этот файл в папке задач, есть еще какие-то задачи, которые предопределены, например миграция и т. д.

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

затем, когда вы запустите команду, она запустит код внутри функции запуска.

php artisan foo --env=local
person Knight    schedule 17.01.2013
comment
Да, это то, что я себе представлял раньше, но с php artisan foo --env=local это запустит задачу только тогда, когда env будет локальным, верно? Что мне действительно нужно, так это установить весь проект как локальный или для разработки, и с этим заставить мою папку конфигурации (d.pr/i/5nZS) работать и подключить правильный хост базы данных. - person Lucas Serafim; 17.01.2013

Я бы рекомендовал сначала настроить виртуальный хост на основе имени для вашего веб-приложения:

<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 в файл hosts /private/etc/hosts следующим образом:

127.0.0.1 project.dev

После этого не забудьте очистить кеш DNS:

$ dscacheutil -flushcache

Затем измените массив $environments, найденный в [project root]/path.php (упомянутый вами файл apps/path.php, не существует), вернув его к тому, что было. Исходный подстановочный знак *.dev подберет .dev в конце предоставленного вами URL-адреса.

$environments = array(

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

);

Затем создайте каталог в applications/config/ с именем local, поместите в новый каталог файл с именем application.php. Конфигурация, указанная в этом файле, переопределит конфигурацию, установленную соответствующими файлами конфигурации и настройками/значениями, заданными в родительском каталоге local, который вы создали.

person Jedism    schedule 05.02.2013