2016-10-31 127 views
4

我試圖編寫一個命令作爲快速入門來建立一個項目。該命令要求輸入數據庫詳細信息,然後更改.env文件。問題是該命令之後需要執行一些數據庫查詢,但不會重新加載.env變量。Laravel Artisan - 重新加載.env變量或重新啓動框架

我的問題是,有沒有辦法重新加載或重寫.env變量運行時。如果沒有,是否有辦法調用另一個Artisan命令剛剛,所以框架自舉再次?

在我的命令中,我試着在我的實際命令中做$this->call('build:project'),但即使在第二次調用中,變量也沒有重新加載。

有沒有辦法實現這一點,而無需用戶手動調用多個命令?

謝謝!

+0

你可以添加一個改變.env文件的命令片段嗎? –

+0

這是一個簡單的str_replace文件: 'file_put_contents(base_path('。env'),str_replace($ from,$ to,file_get_contents(base_path('。env'))));' – Giedrius

回答

5

Laravel使用從.env文件獲取數據的配置文件。所以,你可以做的是override configuration values在運行時:

config(['database.default' => 'mysql']); 
+0

似乎不起作用。我改變'.env'文件,然後執行'config(['database.username'=> $ dbuser]);'並調用'$ this-> call('migrate');'仍然收到錯誤'SQLSTATE [ HY000] [1045]即使我沒有輸入'forge',並且它不在'.env'文件中(它在'database'配置中默認),用戶'forge'@'localhost''的訪問被拒絕。 – Giedrius

+1

@Giedrius,因爲沒有'databade.username'屬性。試試這個:'config(['database.connections.mysql.username'=>'root'])' –

+0

我的不好,衝進去了!這工作完美,遷移現在正在運行,謝謝。 – Giedrius

1

我有同樣的問題,重裝.ENV變量,我用這個命令行,讓你可以清除配置固定它:

php artisan config:clear 

希望有所幫助。問候。

+0

,並且你是如何重新加載.env變量的呢? – user151496

相關問題