Мое приложение / config / database.php было настроено следующим образом:
'mysql' => array( 'driver' => 'mysql', 'host' => getenv('DB_HOST'), 'database' => getenv('DB_NAME'), 'username' => getenv('DB_USER'), 'password' => getenv('DB_PASS'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ),
Я обновил свой код обнаружения env, как это в bootstrap / start.php :
$env = $app->detectEnvironment(function() { return file_exists(dirname(__FILE__) . '/../.env.production.php') ? 'production' : 'local'; });
Теперь я загрузил .env.production.php со следующим:
<?php return [ 'DB_HOST' => '178.xxx.xxx.xxx', 'DB_NAME' => 'USERNAME', 'DB_USER' => 'PASSWORD', 'DB_PASS' => 'DBNAME', ];
Я тестировал обнаружение среды следующим образом:
[www-data@server]$ php artisan env Current application environment: production
Как вы можете видеть, он работает по назначению. Затем я начал выполнять миграцию следующим образом:
миграция php-artisan: установить
Когда я это сделаю, я получаю следующую ошибку:
[www-data@server]$ php artisan migrate:install --env=production [PDOException] SQLSTATE[HY000] [2002] No such file or directory migrate:install [--database[="..."]]
Любая идея, почему это может быть? похоже, что он не загружает файл .env.production.php .
Кто-нибудь знает, как исправить эту ошибку? Заранее спасибо.
В документах Laravel 4 указано, что он должен быть .env.php
на вашем производственном сервере.
Теперь на вашем производственном сервере создайте файл .env.php в корне проекта, который содержит соответствующие значения для вашей производственной среды. Как и файл .env.local.php, файл production.env.php никогда не должен включаться в исходный элемент управления.
Поэтому просто измените код обнаружения среды на этот
$env = $app->detectEnvironment(function() { return file_exists(dirname(__FILE__) . '/../.env.php') ? 'production' : 'local'; });
Примечание. Вы все еще используете .env.local.php
на своем сервере разработки.