0

我是Laravel的新手,我想请一些帮助。Laravel没有检测到environemnt正确

首先我试图根据机器名称设置我的“发展”的环境,所以我做了这个

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

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

)); 

,但似乎没有工作。所以我也跟着上Environment Configuration的指示,做了以下

$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? 

如果我继续我得到'Access denied for user''@'localhost'to database'forge'。

嗯,我想这个问题与环境配置有关。任何想法如何解决它?

+0

试着用'--env'标志来做(所以'php artisan --env migrate')。那样有用吗? – 2014-09-24 11:17:23

+0

我得到以下:[RuntimeException]没有足够的参数 – Lykos 2014-09-24 11:20:19

+0

它应该是:'php artisan migrate --env = local' – 2014-09-24 11:24:26

回答

0

$_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上将/替换为\

您也可以指定环境工匠:

php artisan migrate --env=local 

但我会建议你有你的环境中才能,让一切更容易。更少的机会搞乱你的制作。

+0

我试过你的方式,并做了'local'=> strpos(getcwd(),'/ htdocs/my_projects')> - 1,但是当我死了($ env);我在屏幕上获得'production' – Lykos 2014-09-24 11:27:44

+0

哼,'getcwd()'包含了什么? – 2014-09-24 11:34:13

+0

我的不好,抱歉。我不得不将'/'改为'\'而不是 – Lykos 2014-09-24 12:01:07

0

最好的做法是在使用artisan命令时始终明确包含环境。你可以是这样做的:

php artisan migrate --env=local 

这将确保该命令在local环境中运行。

+0

为什么这是最佳做法?您是否仍然在生产服务器上发出警告? – 2014-09-24 11:32:01

+2

这是最佳实践,因为如果明确指定环境,则100%确定您正在执行命令的环境,并且不会在错误的环境中意外执行命令。您仍然会收到生产警告。 – lowerends 2014-09-24 11:38:04

+0

谢谢,它可以正常工作,但是我想问问是否可以用'local'=>数组('ΛΥΚΟΣ-PC')设置来解决这个问题 – Lykos 2014-09-24 11:57:07