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

17
demandé sur godsaway 2015-09-06 14:26:37

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.

35
répondu morph 2016-12-28 18:30:33

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.

10
répondu AurelienT 2015-09-06 13:40:10

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) {
    //
}
3
répondu Question Mark 2017-09-15 10:11:18

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.

1
répondu MatteoOreficeIT 2018-05-11 14:21:24

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.

-5
répondu godsaway 2015-09-07 16:15:33