我是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']
变量仅在通过Web服务器启动时才可用。
'local' => array('ΛΥΚΟΣ-PC')
应该有效,可能与特殊字符有关。
我根据laravel路径设置环境:
$env = $app->detectEnvironment(array(
'local' => strpos(getcwd(), '/local')>-1,
'staging' => strpos(getcwd(), '/staging')>-1,
));
因此,如果/local
路径的一部分将环境设置为局部环境。注意:您可能需要更换/
与\
在Windows上。
您还可以为Artisan指定环境:
php artisan migrate --env=local
但我建议您整理好环境,使一切变得容易。减少混乱生产的机会。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句