2015-09-06 123 views
9

我Laravel 5已經運行OK,直到該數據庫配置,然後發現了這個錯誤:重裝.ENV變量,無需重新啓動服務器(Laravel 5,共享主機)

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known 

做一些研究似乎我配置的MySQL訪問太遲,所以我應該重新啓動服務器以獲取正確的環境變量。那麼,我正在使用Dreamhost的共享服務器,我不能那樣做。

我該如何解決這個問題?

謝謝

+0

您不必重新啓動Web服務器以使Laravel重新讀取它的.env文件。 Laravel在每次運行中都會這樣做。 –

+0

@ max.lanin所以那麼如果這不是問題,如果憑證是正確的,有什麼問題?我正在運行'php artisan migrate',以便我應用遷移 – godsaway

回答

0

config/database.php我將默認的數據庫連接從mysql更改爲sqlite。我刪除了.env文件(實際上已將其重命名),並使用touch storage/database.sqlite創建了sqlite文件。遷移使用sqlite。

然後我將config/database.php默認數據庫連接切換回mysql並恢復了.env文件。遷移使用mysql。

這沒有任何意義,我猜。也許是服務器端的東西。

8

您的配置變量可能會被緩存。驗證您的config/app.php還有那麼你.env文件嘗試

php artisan cache:clear 
在命令行上

+0

謝謝,但我已經嘗試過了。無論如何,如果'.env'變量覆蓋'config/app.php'變量,爲什麼我應該檢查這個文件? – godsaway

+0

他們沒有。 'config/app.php'文件在'env()'函數中使用它們。所有的配置文件的確如此。所以我會檢查'config/database.php'來查看對'env()'的調用是否使用了正確的名字。 – AurelienT

+0

讓我們來看看,如果我的應用程序在Apache本地工作,我應該只調整服務器中的'.env'文件中的一些值,對吧?如果'config /'文件裏沒有任何內容改變,我猜想所有的東西都應該可以工作。有一些我錯過了該死的 – godsaway

19

如果您在服務器上運行了php artisan config:cache,那麼您的Laravel應用程序可以緩存您放入.env文件的過時配置設置。

運行php artisan config:clear來解決這個問題。

+1

這是最好的答案。爲我工作!謝謝 –

1

如果有人遇到這個問題,誰不能重新加載他們的網絡服務器(長時間運行的控制檯命令,像一個隊列運行),或需要重新加載他們的.env文件中請求,我找到了一種方法來正確地重新加載.env變量laravel 5.

use Dotenv; 
use InvalidArgumentException; 

try { 
    Dotenv::makeMutable(); 
    Dotenv::load(app()->environmentPath(), app()->environmentFile()); 
    Dotenv::makeImmutable(); 
} catch (InvalidArgumentException $e) { 
    // 
} 
+0

我的laravel似乎無法默認導入Dotenv – user151496

相關問題