web-dev-qa-db-ja.com

Laravel 5-env()は常にnullを返します

私のenv()ヘルパーが常にnullを返す理由を見つけようとします。これは、特に_app.php_ファイルで問題を引き起こします。デフォルトでは、env()ヘルパーが広く使用されています。おそらく不思議なサーバー設定でしょうか?

私のenvファイル

_APP_ENV=production
APP_KEY=base64:mymagickey=
APP_DEBUG=false
APP_LOG_LEVEL=info
APP_URL=http://www.example.com

etc...
_

編集-私は以下を試しました

_php artisan cache:clear
php artisan view:clear
php artisan config:cache
_

そしてもちろん、私はenvヘルパーを次のように使用しています:env('APP_ENV')

しかし、まだ成功していません。奇妙な部分は、_$_ENV_ php変数には_.env_ファイルからのすべての単一変数が含まれているということです。

29
Fusion

env(...)関数は、構成をキャッシュした後は機能しません。 (laravel 5.2から現在の5.7まで)

Laravel documentation

デプロイ中にconfig:cacheコマンドを使用している場合は、アプリケーションの他の場所からではなく、構成ファイル内からのみenv関数を呼び出していることを確認する必要があります。

だから正しい答えは

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

そして、同じ documentation から引用しました

しかし、簡単な修正のためにこれは行います:

php artisan config:clear

これで、config:cacheを試したときに、キャッシュの前に構成がクリアされても、それが役に立たなかった理由が明らかになります。

57

このコマンドがあなたを救うことを願っています

php artisan config:clear

29
sh6210

あなたのLaravelが.envまたはデータベースフォルダーの変更後、または他の変更のために期待どおりに動作しない場合の5つの最も重要なコマンド。完全な説明は次のとおりです。 https:// www.youtube.com/watch?v=Q1ynDMC8UGg

php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
composer dump-autoload
9
Learner

これは「.env」の既知のバグであり、次の方法で解決できます。

php artisan config:cache
8
vpdeva

\Config::get('app.env');の代わりにenv(APP_ENV);を使用してください。最終的には同じエラーが発生し、ライブWebサイトには向かないためです。

ENVからカスタム変数を追加する場合は、設定アプリに移動して次を見つけます。

_/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),
_

'env' => env('APP_ENV', 'production'),」の下に新しい行を追加します。たとえば、次のようになります。

_/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),
'key' => env('APP_KEY'),
_

次のように「キー」変数を呼び出すことができます。

_\Config::get('app.key');
_

「key」などの新しい変数をアプリenvに追加するたびに、_config:cache_を使用してキャッシュをリセットする必要があります。

6
rebirth1078

古いバージョンのPHPがサーバーにインストールされているように見えますが、これはLaravelの_.env_パッケージが正常に動作するために使用できません。 PHP 7がインストールされている別のサーバーにWebサイトを展開すると、env()は期待どおりの値を返しました。

0
Fusion