PDO-Verbindungsfehler: „Keine solche Datei oder kein solches Verzeichnis (versucht, eine Verbindung über unix:///tmp/mysql.sock herzustellen)“
In dieser Frage äußert der Benutzer Bedenken hinsichtlich eines Problems bei der Verbindung zu einer Datenbank über PDO, das zuvor funktionierte. Der Benutzer ist ratlos, weil er keine Einstellungen im Zusammenhang mit dem Code oder der Datenbank geändert hat und sich nicht sicher ist, wo das Problem liegt.
Der vom Benutzer bereitgestellte PHP-Codeausschnitt deutet darauf hin, dass er versucht, eine TCP/IP-Verbindung herzustellen zu einer Datenbank mit dem Hostnamen „localhost“. Die Fehlermeldung weist jedoch darauf hin, dass stattdessen versucht wurde, eine Verbindung über einen Unix-Socket herzustellen.
Lösung:
Der Benutzer versucht aufgrund von PHP unabsichtlich, einen Unix-Socket zu verwenden Standardbehandlung der Clientbibliothek für „localhost“. Diese Bibliothek interpretiert „localhost“ als Socket-Speicherort und nicht als TCP-Host.
Um diesen Fehler zu beheben und eine TCP/IP-Verbindung zum lokalen Computer herzustellen, sollte der Benutzer „127.0.0.1“ als Hostnamen ersetzen in ihrem PHP-Code:
<code class="php">new PDO('mysql:host=127.0.0.1;port=3306;dbname=test', 'username', 'password');</code>
Wenn die Absicht besteht, einen Unix-Socket zu verwenden, kann der Benutzer dessen Speicherort im DSN explizit angeben, indem er die DSN-Option „unix_socket“ anstelle von „host“ verwendet. Der Speicherort des für localhost verwendeten Unix-Sockets kann zur Kompilierungszeit oder in bestimmten PHP-Versionen durch Ändern der Einstellung „pdo_mysql.default_socket“ in der Datei php.ini konfiguriert werden.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine PDO-Verbindung mit „Keine solche Datei oder kein solches Verzeichnis (Versuch, eine Verbindung über unix:///tmp/mysql.sock herzustellen)' fehl, wenn ich „localhost' verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!