2014-08-29 3 views
5

Я использую Github для развертывания моих сайтов на моем производственном сервере. Из-за этого я не хочу хранить файлы .env. *. Php, чтобы они были в моем .gitignore.Переменные среды и ремесленник, не работающие на производственном сервере

В каждой директории среды я настроил конфиг базы данных для использования getenv(), например:

<?php 

'connections' => array(

    'mysql' => array(
     'driver' => 'mysql', 
     'host'  => getenv('DB_HOST'), 
     'database' => getenv('DB_NAME'), 
     'username' => getenv('DB_USERNAME'), 
     'password' => getenv('DB_PASSWORD'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ), 


), 

); 

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

SetEnv DB_HOST ***.***.***.*** 
SetEnv DB_NAME database 
SetEnv DB_USERNAME databaseuser 
SetEnv DB_PASSWORD databasepass 

Все это прекрасно работает на производственном сервере.

Однако, я только вручную импортировал базу данных на данный момент, а не используя php artisan migrate, потому что он не работает.

Я знаю, что это не сработало, потому что оно не попадает в apache, поэтому переменные не устанавливаются, но я пробовал множество способов, чтобы попытаться обойти эту проблему, но мне не повезло с все же.

Я пытался заставить окружающую среду, чтобы увидеть, если он может получить переменные с помощью php artisan --env=production migrate

Я также попытался проверить, что он использует правильную среду, запустив php artisan env и он использует производственную среду, которая является правильной ,

Моя следующая идея состояла в том, чтобы создать файл .env.production.php вручную на рабочем сервере. Я создал один и использовал getenv() на всякий случай, когда он работал так, но произошла такая же ошибка, поэтому я попытался установить переменные вручную, не используя getenv(), и мне все еще не повезло.

Любые идеи были бы весьма признательны.

+0

производства .env файлы называются .env.php не .env.production.php –

+0

Я создал среду в пределах начальной загрузки/start.php с именем «производства», будет ли эта не работает? – Karl

+0

Я только что пробовал файл .env.php, который работает, если я устанавливаю переменные вручную, есть ли способ использовать переменные, которые устанавливаются через apache для работы с мастером? – Karl

ответ

1

Вы должны использовать .env.php файлы, как описано в laravel docs.

Для установки переменных окружения в производстве, использовании файл с именем .env.php в корневом каталоге проекта:

<?php 

# .env.php 

return array(

    'DB_HOST' => 'localhost', 
    'DB_NAME' => 'my_database', 
    'DB_USER' => 'user_name', 
    'DB_PASS' => 'super-secret-sauce', 

); 

Для различных сред, вы используете различные .env файлы. Например, в местной условиях вы использовали бы , а для тестирования вы использовали бы .env.testing.php.

При использовании команд artisan, таких как migrate или db:seed, вы можете указать среду с помощью опции --env=.

Например $ php artisan db:seed --class=UsersTableSeeder --env=testing

+0

.env файлы работают только в laravel 5. Он использует laravel 4 –

+0

@RichardTorcato: '.env. *. Php' файлы для laravel 4. Файлы' .env' предназначены для laravel 5. Самый простой способ рассказать разницу заключается в том, что файлы env в L4 были php-файлами. Кроме того, ссылка, на которую я указывал в документах, - это Laravel 4. – ryanwinchester

Смежные вопросы