Как изменить среду в Laravel 5.1?

То, что я понимаю о работе среды в Laravel, заключается в том, что у вас разные среды для разных, хорошо окружающих сред. Итак, если вы используете локальное приложение, вы можете иметь файл .env.local. Если вы тестируете или производят, вы можете использовать .env.testing или .env.production. (Исправьте меня, если я ошибаюсь.)
По умолчанию мы получаем файл .env, который мы можем редактировать. Но может ли кто-нибудь сказать мне, что такое рабочий процесс изменения среды в Laravel. Я пробовал документацию, но я не мог ее получить. Пожалуйста, помогите мне.

Ответ 1

При установке Laravel 5.1 вы получаете два файла .env и .env.example если вы хотите работать локально, вы устанавливаете:

APP_ENV=local
APP_DEBUG=true

в prod вы установили

APP_ENV=production
APP_DEBUG=false

Сообщение об ошибке в режиме отладки

enter image description here

Сообщение об ошибке из режима производства

enter image description here

Примечание. У вас есть два файла .env .env и .env.example.. вы также можете создать еще один, который вы называете .env.production, но имейте в виду, что для загрузки конфигурации вы должны просто переименовать свой файл до .env

EDIT: Итак, если вы все еще работаете на локальном компьютере и вам нужна другая база данных для тестирования, вы можете создать другой файл, чтобы в итоге у вас было 3 файла .env:

.env.production
.env.local1
.env.local2

когда вы хотите переключить конфигурацию, просто переименуйте нужный файл в .env

Ответ 2

Идея иметь .env.local.php, .env.production.php устарела с тех пор, как Laravel 5. Теперь в L5 мы имеем единственный файл .env, в котором вы сохраняете всю конфигурацию своей среды. Чтобы определить вашу среду, вы должны поместить в этот файл APP_ENV=local.

После развертывания вашего проекта на производстве вы создадите файл .env на сервере и определите APP_ENV=production

Если вы используете такой сервис, как Laravel Forge, он предоставляет вам простой способ хранения данных о вашей среде. Но эта другая история:)

Изменить

чтобы использовать несколько подключений db, вы можете сделать следующее:

в вашем config/database.php файле

<?php
return array(

'default' => env('DEFAULT_DB_CONNECTION', 'mysql'),

'connections' => array(

    # Our primary database connection
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'host1',
        'database'  => 'database1',
        'username'  => 'user1',
        'password'  => 'pass1'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    # Our secondary database connection
    'another_mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'host2',
        'database'  => 'database2',
        'username'  => 'user2',
        'password'  => 'pass2'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
),

);

И затем в файле .env введите еще один ключ

DEFAULT_DB_CONNECTION=another_mysql

Конечно, этот вид предопределяет ваше соединение. Если вы хотите быть динамичным, вы можете сделать следующее

$users = DB::connection('another_db_connection')->select('users somehow');

таким образом вы получите результаты от вашего вторичного соединения mysql, независимо от того, что настроено в вашей среде.