Mon Laravel 5 a fonctionné jusqu'à la configuration de la base de données, puis a détecté l'erreur suivante:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
En faisant des recherches, il semble que j’ai configuré l’accès MySQL trop tard. Je devrais donc redémarrer le serveur afin d’obtenir les variables d’environnement correctes. Eh bien, j'utilise le serveur partagé de Dreamhost et je ne peux tout simplement pas le faire.
Comment dois-je résoudre ce problème?
Merci
Si vous avez couru php artisan config:cache
_ sur votre serveur, votre application Laravel pourrait mettre en cache les paramètres de configuration obsolètes que vous avez mis dans le .env
fichier.
Courir 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 votre fichier .env
Puis essayez
php artisan cache:clear
sur la ligne de commande.
Je sais que c'est vieux, mais pour les développeurs locaux, c'est ce qui a ramené les choses dans un fichier .env de production:
rm bootstrap/cache/config.php
puis
php artisan config:cache
php artisan config:clear
php artisan cache:clear
Une solution courte:
use Dotenv;
with(new Dotenv(app()->environmentPath(), app()->environmentFile()))->overload();
with(new LoadConfiguration())->bootstrap(app());
Dans mon cas, je devais rétablir la connexion à la base de données après avoir modifié .env par programme, mais cela ne fonctionnait pas. Si vous rencontrez des problèmes, essayez ceci.
app('db')->purge($connection->getName());
après le rechargement .env, c’est que Laravel App aurait pu accéder à la connexion par défaut auparavant et au \Illuminate\Database\DatabaseManager
a besoin de relire les paramètres de configuration.
Au cas où quelqu'un tomberait sur cette question et ne pourrait pas recharger son serveur Web (commande console longue comme un coureur de file d'attente) ou s'il devait recharger son fichier .env à mi-requête, j'ai trouvé un moyen de recharger correctement les variables .env dans laravel 5.
use Dotenv;
use InvalidArgumentException;
try {
Dotenv::makeMutable();
Dotenv::load(app()->environmentPath(), app()->environmentFile());
Dotenv::makeImmutable();
} catch (InvalidArgumentException $e) {
//
}
Pour être clair, il existe 4 types de caches que vous pouvez effacer en fonction de votre cas.
php artisan cache:clear
Vous pouvez exécuter l'instruction ci-dessus dans votre console lorsque vous souhaitez effacer le cache de l'application. En réalité, cette instruction efface tous les caches de storage\framework\cache.
php artisan route:cache
Cela efface le cache de votre itinéraire. Ainsi, si vous avez ajouté un nouvel itinéraire ou modifié un contrôleur d’itinéraire ou une action, vous pouvez utiliser celui-ci pour le recharger.
php artisan config:cache
Cela effacera la mise en cache du fichier env et le rechargera
php artisan view:clear
Cela effacera les fichiers de vue compilés de votre application.
La plupart des fournisseurs d'hébergement partagé ne fournissent pas d'accès SSH aux systèmes. Dans ce cas, vous devrez créer un itinéraire et appeler la ligne suivante comme suit:
Route::get('/clear-cache', function() {
Artisan::call('cache:clear');
return "All cache cleared";
});