Recharger.variables env sans redémarrage du serveur (Laravel 5, hébergement partagé) )
mon Laravel 5 a fonctionné correctement jusqu'à ce que la base de données soit configurée, puis a trouvé cette erreur:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
en faisant quelques recherches il semble que J'ai configuré L'accès MySQL trop tard, donc je devrais redémarrer le serveur afin d'obtenir les variables d'environnement correctes. J'utilise le serveur partagé de Dreamhost et je ne peux pas faire ça.
comment régler ce problème?
Merci
5 réponses
si vous avez couru php artisan config:cache
sur votre serveur, alors votre application Laravel pourrait mettre en cache les paramètres de configuration obsolètes que vous avez mis dans le .env
fichier.
Exécuter php artisan config:clear
pour résoudre ce problème.
il est possible que vos variables de configuration soient mises en cache. Vérifiez votre config/app.php
ainsi que .env
le fichier puis essayez
php artisan cache:clear
sur la ligne de commande.
dans le cas où quelqu'un tombe sur cette question qui ne peut pas recharger son webserver (commande de la console longue durée comme un coureur de file d'attente) ou a besoin de recharger son .j'ai trouvé un moyen de recharger correctement .variables env dans laravel 5.
use Dotenv;
use InvalidArgumentException;
try {
Dotenv::makeMutable();
Dotenv::load(app()->environmentPath(), app()->environmentFile());
Dotenv::makeImmutable();
} catch (InvalidArgumentException $e) {
//
}
une solution courte:
use Dotenv;
with(new Dotenv(app()->environmentPath(), app()->environmentFile()))->overload();
with(new LoadConfiguration())->bootstrap(app());
dans mon cas, j'ai dû rétablir la connexion à la base de données après modification .env par programme, mais il ne fonctionne pas , Si vous avez ce problème, essayez ce
app('db')->purge($connection->getName());
après le rechargement .env, C'est parce que Laravel App aurait pu accéder à la connexion par défaut avant et le \Illuminate\Database\DatabaseManager
a besoin de relire les paramètres de configuration.
config/database.php
j'ai changé la connexion DB par défaut de mysql en sqlite. J'ai supprimé le .env
fichier (en fait il renommé) et créé le fichier sqlite touch storage/database.sqlite
. La migration a fonctionné avec sqlite.
puis j'ai inversé le config/database.php
connexion DB par défaut à mysql et récupéré le .env
fichier. La migration a fonctionné avec mysql.
ça n'a pas de sens, je suppose. C'était peut-être quelque chose de serverside.