ホームページ >バックエンド開発 >PHPチュートリアル >php pdo 接続エラー 接続に失敗しました: SQLSTATE[HY000] [2002]_PHP チュートリアル
次に、php pdo_mysql 接続エラー 接続に失敗しました: SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリの問題の解決策を見てみましょう。
エラー
接続に失敗しました: SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリはありません
環境の概要:
MacOS
開発環境 apache mysql php xamppで構築
xampp は mysql oracle をサポートしており、テストは問題なく、phpinfo は pdo_mysql pdo_pgsql pdo_sqlite をサポートしていることを示しています
その中で、xampp に付属の mysql ではなく、brew package Management を使用して mysql をマシンにインストールしました
php pdo connection error Connection failed: SQLSTATE[HY000] [2002] No such file or directory
最初は、ファイルが見つからないのは URL の書き換えが原因だと思っていました (nginx から Apache に切り替えたため)。その結果、追跡プログラムは新しい PDO エラーが報告されていることがわかりました。
いくつかの情報を検索した結果、次のことがわかりました:これは、php.ini 設定ファイルの pdo_mysql.default_socket で指定された間違った mysql.sock パスです
私のmysql.sockファイルは/private/tmp/mysql.sockにあります
それで設定:
pdo_mysql.default_socket=/private/tmp/mysql.sock
mysql.sock がどこにあるかわからない場合は、検索できます (コンパイルとインストールは、yum、apt-get、または brew などのパッケージ管理ツールのインストール場所とは異なるため)
sudo find / -name ‘mysql.sock’
以下は公式のバグ修正です
1. php.iniを開きます(私のものは/private/etc/にありました)
2. 次の行を見つけます: pdo_mysql.default_socket=/var/mysql/mysql.sock
3. 行を次のように変更します: pdo_mysql.default_socket=/tmp/mysql.sock
4. Apacheを再起動します
1. ここで付け加えておく必要がありますが、新しいシステムまたは PHP を始めたばかりの人の場合、php.ini ファイルは Mac システムに存在しません
2. /private/etc/ ディレクトリに php.ini.default を cp する必要があります
php.iniを編集して、
3. ただし、データベースとして xampp mysql を使用する場合は、公式のステップ 2 を使用する必要はなく、次のメソッドを記述するだけです。
pdo_mysql.default_socket=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
解決策3
sudo vim /etc/php.ini
次の 3 つの元々空白の値をすべて /tmp/mysql.sock に設定します
mysql.default_socket = /tmp/mysql.sock
pdo_mysql.default_socket= /tmp/mysql.sock
mysqli.default_socket =/tmp/mysql.sock
すべてが変更されました
改造して使用してください
sudo /usr/sbin/apachectl 再起動