web-dev-qa-db-fra.com

Laravel 5 - env ​​() renvoie toujours null

J'essaie de savoir pourquoi mon assistant env() renvoie toujours null. Cela pose des problèmes, en particulier dans le fichier app.php, où les assistants env() sont largement utilisés par défaut. Peut-être un paramètre de serveur mystérieux?

Mon fichier env :

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

etc...

EDIT - J'ai essayé de suivre :

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

et bien sûr, j'utilise env helper comme ceci: env('APP_ENV')

Mais toujours pas de succès. La partie bizarre est que cette variable php $_ENV contient chaque variable du fichier .env.

16
Fusion

La fonction env(...) ne fonctionnera pas après la mise en cache de la configuration. (à partir de laravel 5,2 à 5,7 actuel)

La Documentation Laravel dit

Si vous utilisez la commande config:cache lors du déploiement, vous devez vous assurer que vous appelez uniquement la fonction env à partir de vos fichiers de configuration et non de n'importe où ailleurs dans votre application.

Donc, la bonne réponse serait de 

Si vous appelez env depuis votre application, il est vivement recommandé d'ajouter les valeurs de configuration appropriées à vos fichiers de configuration et d'appeler env depuis cet emplacement, ce qui vous permettra de convertir vos appels env en appels de configuration.

Et je l'ai cité de la même documentation

Mais pour une solution rapide, cela suffira:

php artisan config:clear

Et maintenant, il devrait être clair pourquoi, lorsque vous avez essayé config:cache, cela n'a pas aidé, même si cela efface la configuration avant la mise en cache.

9
Yevgeniy Afanasyev

J'espère que cette commande vous sauvera

php artisan config: effacer

27
sh6210

Utilisez \Config::get('app.env'); au lieu de env(APP_ENV); car vous obtiendrez éventuellement la même erreur et ce n'est pas bon pour un site Web actif.

Si vous voulez ajouter des variables personnalisées à partir de votre ENV, allez dans votre application de configuration et trouvez ceci:

/*
    |--------------------------------------------------------------------------
    | 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'),

ajoutez une nouvelle ligne sous "'env' => env('APP_ENV', 'production'),", par exemple, il pourrait s'agir de:

/*
    |--------------------------------------------------------------------------
    | 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'),

Vous pouvez appeler la variable "clé" comme ceci:

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

Chaque fois que vous ajoutez une nouvelle variable telle que "clé" à l'environnement d'application, vous devez utiliser config:cache pour réinitialiser le cache.

6
rebirth1078

C'est un bogue connu ".env" qui peut être résolu avec:

php artisan config:cache
6
vpdeva

Les cinq commandes les plus importantes si votre Laravel ne fonctionne pas correctement après quelques modifications dans le fichier .env ou dans le dossier de base de données ou en raison de toute autre modification .. Voici l'explication complète: https://www.youtube.com/watch? v = Q1ynDMC8UGg

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

On dirait que l'ancienne version PHP était installée sur le serveur, ce qui n'est pas situable pour que le paquetage .env de Laravel fonctionne correctement. Lorsque j'ai déployé le site Web sur un autre serveur sur lequel PHP 7 était installé, env() a renvoyé les valeurs comme prévu.

0
Fusion