J'ai ajouté cette variable au fichier .env
STRIPE_SECRET = a12345
Je voudrais vider la variable en utilisant routes/web.php
<?php
dd(env('STRIPE_SECRET'));
Mais il semble que cela retourne toujours null.
Mise à jour: fichier .env mis à jour. J'ai seulement supprimé DB_PASSWORD.
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:08txDXXatyYsP5WQ4ECz35Q7OyBEe8Vgb/zK5fZsHik=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
APP_LOCALE=tr
APP_LC_ALL=tr_TR.utf8
DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=gunluk
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_Host=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_Host=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=03ac580c85842d
MAIL_PASSWORD=1d6d902d296942
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
STRIPE=a123
STRIPE_SECRET=a12345
La principale raison de votre problème est que vous mettez en cache votre configuration. Lorsque vous exécutez php artisan config:cache
, vous stockez votre configuration dans votre cache et le prochain démarrage de Laravel ne lira pas le fichier .env
car il détectera que la configuration a été stockée dans le cache. Le fichier d'environnement ne doit être utilisé que pour configurer les fichiers de configuration. Pour accéder à la valeur recherchée, utilisez UNIQUEMENT la méthode config
.
Supposons que vous ayez le fichier config/stripe.php
composé de ce contenu:
<?php
return [
'secret' => env('STRIPE_SECRET', '')
];
Une fois que vous avez exécuté php artisan config:cache
, accédez à cette valeur en utilisant UNIQUEMENT la syntaxe config('stripe.secret')
via votre code d'application. Chaque fois que vous mettez à jour vos fichiers de configuration et votre .env
, vous devez réexécuter php artisan config:cache
.
Tout d'abord, il n'y a pas de STRIPE_SECRET
dans votre fichier .env
(comme avant de modifier la question). Assurez-vous donc que votre .env
doit avoir cette variable. Vous devez effacer votre cache de configuration en exécutant les commandes suivantes dans le même ordre
php artisan config:cache
php artisan config:clear
Laravel met en cache vos fichiers de configuration pour une exécution plus rapide. Ainsi, chaque fois que vous modifiez les fichiers de configuration sur le serveur, vous devez vider le cache.
De plus, vous pouvez également exécuter ces commandes pour vider les autres caches.
php artisan cache:clear //for clearing the cache
php artisan view:clear //for clearing the compiled views
php artisan route:clear //for clearing the routes cache
Vous pouvez également créer les routes pour ces commandes et appeler les commandes à partir du code également
Route::get('/cache-clear', function() {
$exitCode = Artisan::call('cache:clear');
echo "Cache Cleard: ".$exitCode;
});
Route::get('/view-clear', function() {
$exitCode = Artisan::call('view:clear');
echo "View Cleard: ".$exitCode;
});
Route::get('/route-cache', function() {
$exitCode = Artisan::call('route:cache');
echo "Route Cached: ".$exitCode;
});
Route::get('/route-clear', function() {
$exitCode = Artisan::call('route:clear');
echo "Route Cache Cleared: ".$exitCode;
});
Route::get('/config-cache', function() {
$exitCode = Artisan::call('config:cache');
echo "Config Cached: ".$exitCode;
});
Route::get('/config-clear', function() {
$exitCode = Artisan::call('config:clear');
echo "Config Cache Cleared: ".$exitCode;
});
si vous avez STRIPE="a12345"
ceci dans le fichier .env
ou si vous modifiez un fichier .env
ou un fichier config
, alors suivez ces étapes
encore une chose, écrivez la valeur de la variable avec des virgules comme STRIPE="a12345"
D'abord exécuter ces commandes
php artisan config:clear
php artisan cache:clear
composer dump-autoload
et a finalement utilisé cette commande pour obtenir une variable
dd(env('STRIPE'));
ça marche pour moi
et aussi 1 suggestion stupide: redémarrer le serveur
J'ai ajouter toutes les solutions possibles
Vous pouvez effacer le cache de configuration en utilisant les commandes suivantes
php artisan config:clear
php artisan optimize
php artisan config:cache
Assurez-vous aussi
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 . Si vous appelez env à partir de votre application, il est fortement recommandé d'ajouter les valeurs de configuration appropriées à vos fichiers de configuration et d'appeler env à partir de cet emplacement, vous permettant ainsi de convertir vos appels env en appels de configuration.
Ref:
Mis à jour:
Assurez-vous également que vous avez renommé .env.example
en .env file
par défaut. Laravel a .env.example
Updated 2
Selon votre nouvelle question de mise à jour, votre fichier env a STRIPE
pas STRIPE_SECRET
so vous avez accès comme ceci si ce n’est pas une erreur typo en question
env('STRIPE')
La fonction env(...)
retournera null après la mise en cache de la configuration. (à partir de laravel 5,2 à 5,7 actuel)
La documentation dit
Si vous utilisez la commande
config:cache
lors du déploiement, vous devez vous assurer que vous appelez uniquement la fonctionenv
à 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: effacer
assurez-vous que votre application est complètement démarrée.
si vous utilisez un serveur avec cmd, essayez de redémarrer le serveur.
et si cela ne fonctionne pas, essayez d'effacer le cache en utilisant les méthodes mentionnées ci-dessus par @iCoders.