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