PHP Laravel: Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusé
Je suis la construction d'une application web dans Laravel 5. L'application est censé être de la catégorie "noms" stockées sur une base de données MySQL et d'afficher un formulaire pour ajouter de nouveaux "noms de catégorie". Lorsque j'exécute la commande php artisan serve
et je navigue à http://localhost:8000/admin/categories/, je reçois le message d'erreur suivant:
PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
Selon plusieurs posts que j'ai lu sur un débordement de pile, de nombreux utilisateurs de rencontrer cette erreur n'a pas à configurer correctement le .fichier env, qui remplace les paramètres par défaut de PHP Data Object (AOP), comme spécifié dans le database.php fichier. L' .fichier de configuration est défini ci-dessous:
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Et mysql clé au sein de la database.php fichier est donnée sous la forme:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
Curieusement, lorsque je ssh sur ma machine virtuelle et je mysql -uhomestead -psecret homestead
, je suis en mesure de se connecter à la base de données. La question est, pourquoi est-Laravel impossible de se connecter à MySQL, quand je peux me connecter directement avec les mêmes paramètres? Quoi d'autre pourrait être le refus d'accès à Laravel?
Je reçois le même message de toute façon
Peut-être que ce sera vous aider stackoverflow.com/questions/32373592/...
Je sais que cette idée est farfelue, mais vous pouvez essayez si votre php est à jour ou faut-il avoir les extensions PDO?
"Si vous supprimez l'impossible, ce qui reste, toutefois improbable, doit être la vérité." Je suis à l'aide de php 5.6, ce qui devrait soutenir l'extension PDO
OriginalL'auteur jstein | 2015-09-11
Vous devez vous connecter pour publier un commentaire.
J'ai changé l'adresse ip spécifiée dans la propriété.yaml à partir de localhost à l'adresse 192.168.10.10. Ensuite, j'ai couru
homestead provision
et qui semble résoudre le problème. La machine hôte ne peut pas résoudre localhost ou 127.0.0.1 parce que c'est déjà mappé à lui-même.Pour moi, la modification de la DB_HOST à l'adresse 192.168.10.10 résolu.
OriginalL'auteur jstein
Je vais avoir le même problème avec Wampserver. Il a travaillé pour moi:
Vous devez modifier ce fichier: "C:\wamp\bin\mysql[mysql_version]\my.ini" Par exemple: "C:\wamp\bin\mysql[mysql5.6.12]\my.ini"
Et de modifier la valeur par défaut le port 3306 pour 80. (Lignes 20 & 27, dans les deux)
port = 3306 De port = 80
J'espère que cela est utile.
Et puis il suffit d'Aller à votre panneau de configuration et le démarrage d'Apache & MySQL Services.
OriginalL'auteur Jigs Virani
Allez,
env('DB_HOST', 'localhost')
est pas le même queNULL
etenv('DB_USERNAME', 'homestead')
est pas le même quehomestead
Vous ne pouvez pas appeler "le même" de telles questions différentes, comme prévu explicitement littéral, l'arrêt d'un paramètre ou d'un résultat d'une fonction! C'est trois différents questions!
Vous pouvez dire "la même" que si vous fournissez littéralement mêmes paramètres dans les deux cas:
pour le shell, et
pour Laravel.
OriginalL'auteur Your Common Sense
Raisons peuvent être:
Si vous essayez d'accéder à la DB de autre serveur puis plus escroc problème est DB accès est limité uniquement pour localhost/127.0.0.1
Solution: Vous pouvez modifier
my.cnf
(sur Ubuntu, de nouveau, est situé dans/etc/mysql/my.cnf)
et de modifier les éléments suivants:ou
Je vous Recommande de créer une base de données de l'utilisateur au lieu de root et de suppression de la racine de l'utiliser comme Il n'est pas sûr de fournir DB accéder à partir de n'importe quel IP avec l'utilisateur root.
Si vous essayez de vous connecter DB à partir d'un même serveur:
Solution: il suffit d'utiliser le protocole TCP/IP au lieu de la socket Unix. Vous devez faire cela en utilisant 127.0.0.1 au lieu de localhost lorsque vous vous connectez. Le socket Unix pourrait être plus rapide et plus sûr à utiliser, mais.
Après les modifications apportées vous devez redémarrer le service de mysql
OriginalL'auteur Parveen Shukhala
J'ai changé
à
.fichier env
OriginalL'auteur Raja ji
J'ai connu le même problème et de lire toutes les réponses sur internet, mais aucun d'entre eux ont aidé! enfin trouvé la réponse et j'espère que cette solution vous aide à quelqu'un.
Je viens de mettre mon DB_PORT à
33060
et le problème résolu.OriginalL'auteur Moslem Deris
Dans windows, il vous suffit de désactiver l'Accès Utilisateur Persimissions (UAC)
.-ouvrez exécuter
-type msconfing et appuyez sur Entrée
-accédez à des outils et cherchez.Contrôle de compte d'utilisateur
-ne jamais notifier
-redémarrer le PC, il va
N'oubliez pas de l'autoriser à travers le pare-feu lorsque vous y êtes invité.
OriginalL'auteur Henry
Dans mon cas, j'avais écrit à la .env fichier dans
DB_HOST
l'adresse de la machine virtuelle par défaut de la propriété (l'adresse 192.168.10.10). Mais elle ne fonctionne que pourartisan migrate
. Cependant, en utilisant les applications de se connecter à ce db "à distance" nécessite l'utilisation d'une adresse IP 127.0.0.1.Espère que ça vous aidera quelqu'un.
OriginalL'auteur Paul Burilichev
J'ai eu le même problème une fois, mais dans mon propre cas, j'ai été en cours d'exécution sur le serveur local. J'ai découvert plus tard que l'erreur:
"PDOException with a message 'SQLSTATE[HY000] [2002]
Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusé."était parce que je n'ai pas commencé
Apache and MySQL in Xampp
panneau de contrôle, de sorte que l'application n'a pas pu récupérer le résultat souhaité, car il n'y avait pas coonection.Immédiatement, j'ai commencé à la fois
Apache and MySQL
dans Xampp control panel,the error was fixed
.Espérons que cela fonctionne pour vous
OriginalL'auteur YoungM
parfois, peut-être problème de mise en cache:
OriginalL'auteur joun
J'ai eu cette erreur avec la base de données SQLite. Contrairement à d'autres environnements, où le fichier de base de données peut être créée si elle n'existe pas, dans Laravel, j'ai eu à le créer manuellement le fichier de base de données. Je l'ai créé après l'exécution de mon serveur; et cela m'amènent à cette erreur. Après le redémarrage du serveur, il a été OK.
OriginalL'auteur Jan Bodnar