То, что я понимаю о работе среды в Laravel, заключается в том, что у вас разные среды для разных, хорошо окружающих сред. Итак, если вы используете локальное приложение, вы можете иметь файл .env.local
. Если вы тестируете или производят, вы можете использовать .env.testing
или .env.production
. (Исправьте меня, если я ошибаюсь.)
По умолчанию мы получаем файл .env
, который мы можем редактировать. Но может ли кто-нибудь сказать мне, что такое рабочий процесс изменения среды в Laravel. Я пробовал документацию, но я не мог ее получить. Пожалуйста, помогите мне.
Как изменить среду в Laravel 5.1?
Ответ 1
При установке Laravel 5.1 вы получаете два файла .env
и .env.example
если вы хотите работать локально, вы устанавливаете:
APP_ENV=local
APP_DEBUG=true
в prod вы установили
APP_ENV=production
APP_DEBUG=false
Сообщение об ошибке в режиме отладки
Сообщение об ошибке из режима производства
Примечание. У вас есть два файла .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, независимо от того, что настроено в вашей среде.