PHP Laravel: es konnte Keine Verbindung hergestellt werden, da der Zielcomputer aktiv verweigert
Ich bin Aufbau einer web-Anwendung in Laravel 5. Die Anwendung soll "Kategorie name", gespeichert in einer MySQL-Datenbank und zeigt ein Formular zum hinzufügen einer neuen Kategorie "Namen". Wenn ich den Befehl ausführen php artisan serve
und ich navigieren Sie zu http://localhost:8000/admin/categories/, erhalte ich die folgende Fehlermeldung:
PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
Laut mehreren posts lese ich auf stack overflow, die viele Benutzer auftreten dieses Fehlers nicht richtig konfigurieren .env-Datei, die überschreibt die Standard-Einstellungen für das PHP Data Object (PDO), wie angegeben in der database.php Datei. Die .env-Datei ist nachfolgend definiert:
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Und die mysql-key innerhalb des database.php die Datei wird als gegeben:
'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,
Seltsam, wenn ich ssh in meiner virtuellen Maschine und ich laufen mysql -uhomestead -psecret homestead
bin ich in der Lage die Verbindung zu der Datenbank. Die Frage ist, warum ist Laravel keine Verbindung zu MySQL, wenn ich eine Verbindung herstellen können direkt mit den gleichen Parametern? Was sonst könnte den Zugang zu verweigern Laravel?
- Laufen Sie Ihre Datei über homestead? oder lokale?
- Ich bekomme die gleiche Meldung oder so
- Vielleicht wird Ihnen helfen, stackoverflow.com/questions/32373592/...
- Ich weiß, dieser Vorschlag ist weit hergeholt, aber können Sie versuchen, wenn Sie Ihre php-ist up-to-date oder haben Sie die PDO-extensions drin?
- "Wenn Sie beseitigen das unmöglich, was auch immer bleibt, jedoch unwahrscheinlich, muss die Wahrheit sein." Ich bin mit php 5.6, die Sie unterstützen sollten, die PDO-Erweiterung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Änderte ich die ip-Adresse in der Siedlung.yaml von localhost Adresse 192.168.10.10. Dann lief ich
homestead provision
- und das schien, das problem zu beheben. Die host-Maschine nicht lösen kann "localhost" oder 127.0.0.1, denn das ist bereits zugeordnet sich.Ich habe das gleiche problem mit Wampserver. Es ist für mich gearbeitet:
Müssen Sie diese Datei ändern: "C:\wamp\bin\mysql[mysql_version]\meine.ini" Beispiel: "C:\wamp\bin\mysql[mysql5.6.12]\meine.ini"
Und ändern der Standard-port 3306 zum 80. (Linien 20 & 27, in der beide)
port = 3306 port = 80
Ich hoffe, das ist hilfreich.
Und dann Gehen Sie Einfach zu Ihrem Control panel und starten Sie den Apache & MySQL-Diensten.
Komm,
env('DB_HOST', 'localhost')
ist nirgends die gleiche wieNULL
undenv('DB_USERNAME', 'homestead')
ist nirgends die gleiche wiehomestead
Können Sie nicht an den "gleichen" so unterschiedliche Dinge wie ausdrücklich zur Verfügung gestellt literal, einem nicht vorhandenen parameter oder ein Ergebnis irgendeiner Funktion! Drei verschiedenen Fragen!
Können Sie sagen, "das gleiche" nur, wenn Sie buchstäblich dieselben Parameter in beiden Fällen:
für die shell, und
für Laravel.
Gründe können sein:
Wenn Sie versuchen, eine access-DB aus anderen server dann die meisten Hochstapler problem ist DB mit eingeschränktem Zugriff nur für localhost/127.0.0.1
Lösung: Sie ändern können
my.cnf
(auf Ubuntu wieder befindet sich in/etc/mysql/my.cnf)
und ändern Sie die folgenden:oder
Ich Empfehle zum erstellen einer db-Benutzer statt root und root löschen, da Es nicht sicher ist, bieten DB-Zugriff von jeder beliebigen IP mit dem Benutzer root.
Wenn Sie versuchen, die Verbindung der DB vom gleichen server:
Lösung: Einfach die TCP/IP verwenden statt Unix-socket. Würden Sie dies tun, indem Sie mit 127.0.0.1 anstelle von localhost, wenn Sie eine Verbindung herstellen. Der Unix-socket, könnten schneller und sicherer zu nutzen, obwohl.
Nach vorgenommenen änderungen müssen Sie neu starten der mysql-Dienst
Änderte ich
zu
in .env-Datei
Ich vor dem gleichen problem, und Lesen Sie alle Antworten über das internet, aber keiner von Ihnen geholfen! endlich die Antwort gefunden und ich hoffe, diese Lösung hilft jemandem.
Ich einfach meinen DB_PORT zu
33060
und das problem gelöst.In windows einfach deaktivieren, Benutzer den Zugriff Persimissions (UAC)
.-öffnen Sie run
-Typ msconfing und drücken Sie die EINGABETASTE
-gehen Sie zu Extras, und suchen.UAC
-nie Benachrichtigen
-starten Sie den PC neu, es wird
Erinnern, um ihm zu erlauben, durch die firewall, wenn Sie dazu aufgefordert werden.
In meinem Fall hatte ich geschrieben, um die .env Datei in
DB_HOST
die Adresse der VM wie Standard der Homestead (Adresse 192.168.10.10). Aber es funktioniert nur fürartisan migrate
. Aber mit den apps verbinden Sie dieses db "aus der Ferne" erfordert die Verwendung einer IP 127.0.0.1.Hoffe, es wird jemand helfen.
Ich hatte das gleiche problem mal, aber in meinem eigenen Fall war ich auf dem lokalen server. Später entdeckte ich, dass der Fehler:
"PDOException with a message 'SQLSTATE[HY000] [2002]
Konnte keine Verbindung hergestellt werden da der Zielcomputer aktiv verweigert."war, weil ich noch nicht begonnen haben
Apache and MySQL in Xampp
control panel, so ist die Anwendung konnte nicht Holen Sie sich das gewünschte Ergebnis, weil es keine coonection.Sofort begann ich beide
Apache and MySQL
im Xampp control panel,the error was fixed
.Hoffe, das funktioniert für Sie
manchmal vielleicht caching-problem:
Bekam ich diese Fehlermeldung mit der SQLite-Datenbank. Anders als in anderen Umgebungen, wo die Datenbank-Datei kann erstellt werden, wenn es nicht vorhanden ist, in Laravel, musste ich manuell erstellen Sie die Datenbank-Datei. Ich habe es nach läuft mein server; und dies führte mich zu diesem Fehler. Nach dem Neustart des Servers war es OK.
Ich hatte das gleiche problem in meinem Fall