Laravelは変更後に.envファイルを読み取っていません

Laravel Is Not Reading



問題

これは、新しいLaravel開発者の間で発生するかなり一般的な問題の場合です。

多くの人が、アプリケーションを更新したときに.env構成値が表示されないことを確認するために、.envファイルを更新しようとしています。







さらに興味深いのは、Laravelバージョンをアップグレードした後にこれが表示されることがよくあることです。



したがって、たとえば、これは.envファイルにあります。



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

次に、当然、config /database.phpファイル内に次のようになります。





「mysql」=> [
' データベース '=>env((‘DB_DATABASE’'大腿')。
「ユーザー名」=>env((‘DB_USERNAME’'大腿')。
]

ここでの鍛造はデフォルト値を表します。これは、これらの値が提供されていない場合に使用されることを意味します DB_DATABASEDB_USERNAME .envファイル内の値。この情報は少し役に立ちます。

ここで、この特定の問題が発生したことをどのように知るかは、次の例外が発生した場合です。



PDOException:SQLSTATE[HY000] [1045]アクセスが拒否されました ユーザー ‘lar’ @ ’localhost’
(( を使用して パスワード番号 )。

これは、Laravelアプリケーションがデフォルト値を取得していることを明確に示しています config / database.php .envからではなくファイル。

他のことをする前に、php職人のいじくり回しを使用してこの問題を確認することもできます。

>>>env((‘DB_DATABASE’)。
=> ヌル
>>>getenv((‘DB_DATABASE’)。
=> NS
>>>設定((' データベース .connections.mysql。 データベース ')。
=>大腿
>>>dd(($ _ENV)。
[]

次のことを行っても違いがないことがよくあります。ただし、開発者は、完全に新しいLaravelインストールを実行し、古いアプリフォルダーをコピーするだけで、構成をテストしようとします。彼らはcomposerパッケージのインストールを実行したり、他のことをしたりしません。

Linuxを使用していない限り(理由は後で説明します)、変更はありません。

解決

いつものように、この問題を解決するためにできることはたくさんありますが、そのうちのいくつかは成功する可能性が高くなります。

構成キャッシュをクリアします

まず、まだ行っていない場合は、他のことを行う前に構成キャッシュをクリアする必要があります。

私たちのコードは最近非常に多くのライブラリを使用しているため、実行時にそれらにすばやくアクセスできるようにキャッシュする必要があります。

私は個人的にWindowsとMacでこれに問題がありましたが、何らかの理由で、Linux(Ubuntu)では、これらの構成ファイルが何らかのフックでクリアされるか、キャッシュされないことに気付きました。以下を実行せずに、新しい.env値でアプリケーションをリロードします。

次のコマンドを実行して、構成キャッシュをクリアしてください。

php職人構成キャッシュ
php職人構成クリア

.envファイル内の空きスペースを確認してください

次の解決策は、.envファイル内に空白を含めることです。そしてこれは、ほとんどの人が失敗して髪を引き裂き始める場合です。

これを見逃すのは非常に簡単ですが、例として、.envファイルに含めることができるものは次のようなものです。

サイト名=私のLaravelアプリケーション

空白は.envファイルを破損するため、これだけでは機能しません。

あなたがする必要があるのは、次のように引用符で値をラップすることです。

サイト名=私のLaravelアプリケーション

今回はすべてが正常に機能するはずです。

変更を加えるたびに、必ず構成キャッシュをクリアしてください。これは以前と同じように実行できます。

php職人構成キャッシュ
php職人構成クリア