プロミディア合同会社の斉藤です。
教材作りのため、ローカル環境でPHPを触っていたらデータベースに接続できず、解決までそこそこハマったので記録に残しておきます。
開発環境
Mac Book ProにXAMPPをインストールしたローカル環境。
PHPのみ7.4にアップデートした。
エラーの現象
PHPプログラムから下記のコードでデータベース(MariaDB)に接続をかけると失敗した。
ターミナルからは「mysql -u root」でログインできる。
define(“DB_HOST”, “localhost”);
define(“DB_USERNAME”, “root”);
define(“DB_PASSWORD”, “”);
define(“DB_DBNAME”, “custmer_app”);
$database = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DBNAME);
if ($database == false)
{
die(‘Connect Error (‘ . mysqli_connect_errno() . ‘) ‘ . mysqli_connect_error());
}
エラーメッセージ
Warning: mysqli_connect(): (HY000/2002): No such file or directory in /Users/saitousadayoshi/Documents/php/custmer_app/models/common.php on line 7
Connect Error (2002) No such file or directory
原因
MariaDBに接続するためのsocket「mysql.sock」が見つからないため、接続できずにいた。
確認方法
phpinfo();を実行し、設定情報を確認。
確かにphp.iniの「mysqli.default_socket」が設定されていない。(未設定だと/tmp/mysql.sockに設定される)
ターミナルからMariaDBにログインし「status」と入力。
socketの場所を確認すると「/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock」になっている。
解決方法
php.iniのmysqli.default_socketに/Applications/XAMPP/xamppfiles/var/mysql/mysql.sockを設定する。
php.iniの編集
- ターミナルから「vi /usr/local/etc/php/7.4/php.ini」と入力
- 「/mysqli.default_socket」と入力し検索
- 「i」で編集モード
- 「/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock」を設定
- エスケープキーで編集モードを抜ける
- 「:wq」で保存して終了
Apache Web Serverの再起動
XAMPPの画面を開いてApache Web Serverを選択し、Restratボタンを押す。
まとめ
以上で無事PHPからMariaDBに接続できるようになりました。