Я новичок в 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 ‘.
Ну, я думаю, что эта проблема связана с конфигурацией среды. Есть идеи как это исправить?
Причина, почему $_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
Но я бы порекомендовал вам, чтобы ваша среда в порядке, делает все проще. И меньше шансов испортить ваше производство.
Рекомендуется всегда явно включать среду при использовании команды ремесленника. Вы можете сделать это так:
php artisan migrate --env=local
Это обеспечит выполнение команды в local
среда.