Laravel 5.2がenvファイルを読み取らない


109

Laravel 5.2にアップグレードした後、.envファイルの値が読み込まれません。アップグレードの指示に従いました。auth.php以外の設定ファイルは変更されていません。以前のバージョン5.1.19ではすべて正常に機能していました。

.env などの値が含まれています

DB_DATABASE=mydb
DB_USERNAME=myuser

config/database.php 含む

'mysql' => [
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
]

私はこのエラーを受け取ります:

PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)

明らかに私の環境設定を取得していません。これは、バグナグなどのサードパーティを含め、私の設定ファイルのすべてに影響しています。

私も試しました

php artisan config:clear
php artisan cache:clear

更新

やってみる php artisan tinker

>>> env('DB_DATABASE')
=> null
>>> getenv('DB_DATABASE')
=> false
>>> config('database.connections.mysql.database')
=> "forge"
>>> dd($_ENV)
[]

Laravel 5.2の新しいコピーをインストールしてみました。基本的には自分のappフォルダにのみコピーしました。追加のcomposerパッケージは含まれていません。まだ同じ問題があります。同じサーバーに他のLaravel 5.2プロジェクトがあり、正常に動作しています。


1
.envファイルの名前が.envのみであることを確認しますか?.env.exampleではありませんか?
James Elliott、

アンドリューは、.envファイルをフォージインターフェースで編集していますか、それをアップロードしていますか?
Mark Davidson、

@JamesElliottはい、そうです.env
andrewtweber

1
または、これをローカルで実行していますか?職人のサーブの下で実行している場合は、その可能性がある場合に備えて、再起動する必要があります。
Mark Davidson、

@MarkDavidsonがコマンドラインでviを介して編集し、フルサーバー上ではありません
andrewtweber

回答:


90

公式のLaravel 5.2アップグレードノートから:

config:cache展開中にコマンドを使用している場合 は、env、構成ファイル内からのみ関数を呼び出し、アプリケーションの他の場所からは呼び出さようます。

envアプリケーション内から呼び出す場合は、適切な構成値を構成ファイルに追加し、env代わりにその場所からenv呼び出して、呼び出しをconfig呼び出しに変換できるようにすることを強くお勧めします。

リファレンス:https : //laravel.com/docs/5.2/upgrade#upgrade-5.2.0


36
php artisan config:cache私のためにそれを解決しました-他には何も助けませんでした。ありませんphp artisan config:clear-ありがとう!
kair

36
Laravel 5.3 php artisan config:clearだけが私にとって有効でした
Peon

9
Laravel 5.4-VPSにデプロイ:php artisan config:clear私のために働いた。以前はconfig:cacheを実行していなかったため、キャッシュをクリアする必要があるのは少し奇妙に思えました。
アントニオ


あなたが編集していることを確認してください.env代わりに.env.example、ファイル
コナーリーチ

83

あなたのいずれかの場合は.env、変数に空白が含まれている、あなたは二重引用符でそれらをラップすることを確認してください。例えば:

SITE_NAME="My website"

テストの前にキャッシュをクリアすることを忘れないでください:

php artisan config:cache
php artisan config:clear

はいそれは働いています。.envファイルの値を変更した後、php artisan config:cache & php artisan config:clearコマンドを実行します。それが動作します。
Chandan Sharma

40

ワオ。やれやれだぜ。これは、引用符で囲まれていない、スペースが含まれているenv値があったためです

この

SITE_NAME=My website

これに変更

SITE_NAME="My website"

修正しました。これはLaravel 5.2と関係があったと思います。vlucas/ phpdotenvを1.1.1から2.1.0に


同じように思う-スペースが.env5.2で問題を引き起こしたように見えるが、5.1ではそうではなかった。
thomthom

5
そして、これはLaravelの私の(多くの)バグベアの1つです。さまざまな設定や他のタイプのエラーを静かに無視して受け入れるという癖があり、何も問題がないことを示すものではありません。これはの「機能」かもしれませんphpdotenvが、Laravelは.envインクルードする必要のあるファイルがあり、それが成功しなかったことをまだ知っていますが、誰にも言わなくてもかまいません。
dKen

2
私はすでに愚かな何かのために何時間も無駄にしています。無駄を省いてくれてありがとう!
Jenski、2018年

25

私にとっては、これはこの順序で機能しました:

php artisan config:cache
php artisan config:clear
php artisan cache:clear

そして、残りのすべてを運なしで試しました。


2
この注文により、数時間のデバッグ後に問題が解決しました。
ミニオン

私を助けた。Tks。しかし、idはその理由を理解していませんでした。
マテウスガラッソ

この注文は私を救った。ありがとう
アサドウラ

親切なインターネット見知らぬ人に感謝します、これはそれを成し遂げました!
エドゥアルド

私がこの答えに来るたびに$ 1を手に入れたら、あなたはもう金持ちになるでしょう。ありがとう!
アルティン

24

私にも同様の問題があり、およびコマンドconfig/services.phpを使用config clearして解決しましたoptimize

php artisan config:clear
php artisan optimize

23

私にとっては、

- php artisan config:cache
- php artisan config:clear
- php artisan cache:clear

16

これを実行してください:

php artisan config:clear
php artisan cache:clear

その後
php artisan config:cache


11

ローカル環境でも同じ問題が発生しました。

  1. php artisan config:clear
  2. php artisan config:cache
  3. 次に、php artisan serveコマンドをキャンセルして、再起動します。

9

コマンドphp artisan config:cacheを実行すると、すべてのenv変数env()が消去され、null値が返されます。次のコマンドを実行して、ブームをenv()繰り返し、すべてのenv変数をキャッチし始めます。

php artisan config:clear

魔法のようにこれは私のために働いた-素晴らしい答え!
David Partyka

9

次の推奨事項で問題を解決できます

推奨事項1:

構成ファイルを介して.envファイルを使用する必要があります。つまり、構成ファイル(/config/app.phpや/config/database.phpなど)から.envファイルを読み取る必要がある場合は、構成を使用できます。プロジェクトの任意の場所からのファイル。

推奨2: env値を二重引用符で囲みます

 GOOGLE_CLIENT_ID="887557629-9h6n4ne.apps.googleusercontent.com"
 GOOGLE_CLIENT_SECRET="YT2ev2SpJt_Pa3dit60iFJ"
 GOOGLE_MAP="AIzaSyCK6RWwql0DucT7Sl43w9ma-k8qU"

推奨事項3:構成またはenv値を変更した後は、次のコマンドシーケンスを維持してください。

 composer dump-autoload
 composer dump-autoload -o

 php artisan clear-compiled
 php artisan optimize

 php artisan route:clear
 php artisan view:clear

 php artisan cache:clear
 php artisan config:cache
 php artisan config:clear

推奨4: 構文1が機能しない場合は、別の構文2を試すことができます

   $val1 = env('VARIABLE_NAME');     // syntax1
   $val2 = getenv('VARIABLE_NAME');  // syntax2
   echo 'systax1 value is:'.$val1.' & systax2 value is:'.$val2;

推奨事項5:ユーザー数が多い/多い場合は、サーバー構成で関連するメモリサイズを増やす必要があります

推奨6: .env変数を読み取るときに、デフォルトの推定値を設定します。

 $googleClinetId=env("GOOGLE_CLIENT_ID","889159-9h6n95f1e.apps.googleusercontent.com");
 $googleSecretId=env("GOOGLE_CLIENT_ID","YT2evBCt_Pa3dit60iFJ");
 $googleMap=env("GOOGLE_MAP","AIzaSyCK6RUl0T7Sl43w9ma-k8qU");

8

アップグレード手順でこれを逃しました:

app.php次のようなenv構成オプションを構成ファイルに追加します。 'env' => env('APP_ENV', 'production')

この行を追加すると、ローカル.envファイルが正しく読み込まれます。


1
私のアプリはLaravel 4だったので、同じエラーが発生したと思います。その後、5.0にアップグレードしてから、5.1にアップグレードしました。たくさんの時間を節約してくれてありがとう。ここに賛成投票があります!
Bruno P. Kinoshita

7

シンプルさが力です。

php artisan config:cache

あなたは受け取るでしょう:

構成キャッシュがクリアされました!

構成が正常にキャッシュされました!



5

:portがローカルの.envにある場合も同じことが起こります

再び二重引用符でうまくいきます

APP_URL="http://localhost:8000"

その後

php artisan config:clear

4

@andrewtweberが提案したものに加えて、引用符の間にない限り、KEY =値の間にスペースを入れないようにしてください。

.envファイル例:

...
SITE_NAME= My website
MAIL_PORT= 587
MAIL_FROM_NAME= websitename
...

に:

...
SITE_NAME="My website"
MAIL_PORT=587
MAIL_FROM_NAME=websitename
...

3

私は地元で同じ問題に遭遇し、ここですべての答えを試しましたが、役に立ちませんでした。これだけは私のために働いた、 php artisan config:clearrestart server。魅力的な作品!


4
試す@RameshMhetre php artisan config:cachephp artisan config:clearそしてphp artisan cache:clear
デクスターBengil


2

ローカル開発中にconfig:cacheを呼び出した場合は、bootstrap / cache / config.phpファイルを削除してこれを元に戻すことができます。これは私にとって仕事です。


2

ローカル開発中にconfig:cacheを呼び出した場合は、bootstrap / cache / config.phpファイルを削除してこれを元に戻すことができます。これは私にとって仕事です。

@Payal Pandavが上記のコメントをしました。

簡単な回避策を教えてください。bootstrap / cache /フォルダーにあるconfig.phpファイルを編集するだけです。資格情報を変更します。これでうまくいきました。このファイルには、本番環境の他の重要なデータが含まれている可能性があるため、削除しないでください。


2

私の場合、laravel 5.7 env('APP_URL')は機能しませんがconfig('app.url')機能します。新しい変数をenvconfig に追加した場合-それは機能しません- php artisan config:cacheそれが開始した後は機能します。


3
開発環境にいる場合は、設定とルートをキャッシュしないでください。使用できるすべてのキャッシュを削除するには:php artisan optimize:clear
Zohaib '13

@ZohaibHassan開発環境で構成とルートのキャッシュをオフにする方法は?
KamilKiełczewski19年

1
上記のコマンドはオフになります1.ルートキャッシュ、2構成キャッシュ、3。ビューのクリア4.最適化されたファイルのクリア5.キャッシュがあればクリア
Zohaib

1
構成にのみ使用できphp artisan config:clear、構成キャッシュをクリアして再生成しません。本番php artisan config:cache環境に移行すると、構成をキャッシュするために実行できます
Zohaib

1

このphp artisan config:cacheコマンドをコンソールで実行すると、すべての.envファイルの内容がキャッシュに保存されます。このコマンドの後、内容を.envファイルに追加すると、php artisan config:clearコマンドを実行するまで使用できません。


1

私は幼虫の発育中に多くの同じ問題に直面します。envが機能しなくなり、値を返さない場合があります。その理由は、状況によって異なります。でも私の場合、数日前に走っただけです

 PHP artisan::config:clear

したがって、このコマンドの使用には注意が必要です。キャッシュからすべての構成データを消去するためです。したがって、その後は値を返しません。したがって、この状況で、PHP artisan config :: clearコマンドを実行した場合は、最初にこれを使用する必要があります 。

php artisan config:cache  // it will cache all data 
php artisan config:clear
Configuration cache cleared!

1

私はこれを経験しました。理由は、ファイルの権限が原因で、apache(ユーザーwww-data)が.envを読み取れなかったためです。そのため、ファイルのアクセス許可を変更して、サーバー(apache)がファイルへの読み取りアクセス許可を持っていることを確認しました。それだけでブームになり、今はすべてうまくいきました!
更新:
これを行う方法は、.envファイルの所有者によって異なりますが、Apache www-dataグループに属していると想定すると、次のようになります。

sudo chmod g+r .env

権限構造に応じて変更してください。


So i changed the file permissions to ensure that the server (apache) had read permissions to the file.これは実際には間違ったアプローチです。これらのファイルを所有する所有者としてこの特定のサイトを提供するように、apaxhe構成を修正する必要があります
Marcin Orlowski

0

私はdd / die / dumpを index.phpファイル。これにより、システムは構成を再生成しません。

ビューファイルにダンプを実行するだけです。.envファイルへの変更は即座に更新されます。


0

私はこれでいくつかの問題を抱えていました。これは、.env-fileではなく、アプリのどこかでのファイル権限の問題のようです。

私はしなければなりませんでした-私のドッカーを停止します-chownを使用して、プロジェクト全体で自分のユーザーに所有権を設定します-ドッカーを再度開始します

今回はうまくいきました。


-1

上記のほとんどすべてを試しました。やった

chmod 666 .env

うまくいった。この問題は、私が継承したアプリで発生し続けているようですが、この最新の時間は、.env.testingを追加した後です。Laravel 5.8の実行

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.