Ralat Sambungan PDO: "Tiada fail atau direktori sedemikian (cuba menyambung melalui unix:///tmp/mysql.sock)"
Dalam soalan ini, pengguna menyatakan kebimbangan mengenai isu menyambung ke pangkalan data melalui PDO, yang berfungsi sebelum ini. Pengguna bingung kerana mereka tidak mengubah sebarang tetapan yang berkaitan dengan kod atau pangkalan data dan tidak pasti punca masalah.
Coretan kod PHP yang disediakan pengguna mencadangkan mereka cuba mewujudkan sambungan TCP/IP ke pangkalan data menggunakan nama hos "localhost." Walau bagaimanapun, mesej ralat menunjukkan percubaan untuk menyambung melalui soket Unix sebaliknya.
Penyelesaian:
Pengguna secara tidak sengaja cuba menggunakan soket Unix disebabkan PHP pengendalian lalai perpustakaan pelanggan "localhost." Pustaka ini mentafsirkan "localhost" sebagai lokasi soket dan bukannya hos TCP.
Untuk menyelesaikan ralat ini dan mewujudkan sambungan TCP/IP ke mesin setempat, pengguna harus menggantikan "127.0.0.1" sebagai nama hos dalam kod PHP mereka:
<code class="php">new PDO('mysql:host=127.0.0.1;port=3306;dbname=test', 'username', 'password');</code>
Jika niatnya adalah untuk menggunakan soket Unix, pengguna boleh menentukan lokasinya secara eksplisit dalam DSN menggunakan pilihan DSN "unix_socket" dan bukannya "host." Lokasi soket Unix yang digunakan untuk localhost boleh dikonfigurasikan pada masa penyusunan atau, dalam versi PHP tertentu, dengan mengubah suai tetapan "pdo_mysql.default_socket" dalam fail php.ini.
Atas ialah kandungan terperinci Mengapa Sambungan PDO Saya Gagal Dengan \'Tiada fail atau direktori sedemikian (cuba menyambung melalui unix:///tmp/mysql.sock)\' Apabila Menggunakan \'localhost\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!