Laravel не обнаруживает правильное окружение

Я новичок в Laravel и мне нужна помощь, пожалуйста.

Прежде всего я попытался настроить свою среду разработки в соответствии с именем машины, поэтому я сделал это

die(gethostname()); // output the machine name, in my case is ΛΥΚΟΣ-PC
$env = $app->detectEnvironment(array(

'local' => array('ΛΥΚΟΣ-PC'),

));

но не похоже на работу. Поэтому я следовал инструкциям на Конфигурация среды и сделал следующее

$env = $app->detectEnvironment(function(){

switch ($_SERVER['HTTP_HOST']) {
case 'localhost':
return 'local';
break;

default:
return 'production';
break;
}
});
die($env); // outputs 'local'

Проблема в том, что когда я пытался выполнить некоторые миграции, я набрал в командной строке:

$ php artisan migrate

для того, чтобы создать таблицу, но я получаю это

*******************************
*  Application in Production! *
*******************************

Do you really want to run this command?

и если я продолжу, я получу ‘Доступ запрещен для пользователя’ ‘@’ localhost ‘к базе данных’ forge ‘.

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

0

Решение

Причина, почему $_SERVER['HTTP_HOST'] Решение не работает с Artisan в том, что $_SERVER['HTTP_HOST'] Переменная доступна только при запуске через веб-сервер.

'local' => array('ΛΥΚΟΣ-PC') должно работать, может быть, что-то делать со специальными символами.

Я установил свое окружение на основе пути Laravel:

$env = $app->detectEnvironment(array(

'local' => strpos(getcwd(), '/local')>-1,
'staging' => strpos(getcwd(), '/staging')>-1,

));

Таким образом, среда устанавливается на локальный, если /local является частью пути. Замечания: Возможно, вам придется заменить / с \ на винде.

Вы также можете указать среду для Artisan:

php artisan migrate --env=local

Но я бы порекомендовал вам, чтобы ваша среда в порядке, делает все проще. И меньше шансов испортить ваше производство.

0

Другие решения

Рекомендуется всегда явно включать среду при использовании команды ремесленника. Вы можете сделать это так:

php artisan migrate --env=local

Это обеспечит выполнение команды в local среда.

0

По вопросам рекламы [email protected]