- 更新日: 2016年8月2日
- PHP & CakePHP
PHP+MySQLでNo such file or directoryエラー
PHP + MySQL でローカルに開発環境を構築していて遭遇したエラーです。自分の Mac ローカル開発環境では、phpenv を使って複数の PHP バージョンを管理しています。
— 環境 —
Mac OS X El Capitan 10.11.3
MySQL 5.6.19
phpenv v0.3.0
PHP での MySQL ソケット設定を確認
PHP から MySQL データベースに接続する部分でエラーが発生しており、MySQL のソケットファイル絡みだろうと予測がついたので、まずは PHP の socket 周りの設定を確認。
1 2 3 4 5 6 7 8 |
$ php -i | grep socket mysql.default_socket => no value => no value mysqli.default_socket => no value => no value pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock sockets default_socket_timeout => 60 => 60 |
自分の環境では、以前 MySQL のソケット場所を変更してあったので、MySQL ソケットのパスは /var/lib/mysql/mysql.sock となっています。
MySQLのソケット場所変更、my.cnfでのsocket設定の注意点 | EasyRamble
なので、ソケットのパスを /var/lib/mysql/mysql.sock と指定する必要があります。
php.ini の場所を確認
続いて MySQL ソケットを指定するために、php.ini を確認することにしました。まずは読み込まれている php.ini がどこにあるか確認します。
phpinfo.php
1 2 3 |
<?php phpinfo(); ?> |
上記ファイルをブラウザで表示して、以下の項目から読み込まれる php.ini のパスが分かります。
Configuration File (php.ini) Path
Loaded Configuration File
Mac の phpenv 環境でデフォルトだと、php.ini のパスはおそらく次のようになっているはずです。
1 2 3 |
~/.phpenv/versions/5.*.*/etc/php.ini |
php.ini で MySQL の socket を指定
php.ini を編集して MySQL ソケットのパスを指定します。
php.ini
1 2 3 4 5 |
pdo_mysql.default_socket=/var/lib/mysql/mysql.sock mysql.default_socket=/var/lib/mysql/mysql.sock mysqli.default_socket=/var/lib/mysql/mysql.sock |
最後に apache を再起動。
1 2 3 |
$ sudo apachectl restart |
これで表題のエラーメッセージが消えて、無事に PHP から MySQL に接続されるようになりました。
- – 参考リンク –
- PHP の MySQL で “No such file or directory” と出た時の対処方法 – Qiita
- PHP – MySQLでDB接続時のエラーメッセージの対応方法について。(2826)|teratail
- phpからmysqlへ接続できなくて困っております – PHP | 【OKWAVE】
- PHP & CakePHP の関連記事
- bin/cakeコマンドでintlエラーが出る場合の対処(CakePHP)
- CakePHPアプリケーションをCapistranoでデプロイ
- Integrity constraint violation:Column ‘created’ in order clause is ambiguousエラー/CakePHP
- CakePHPでDB関連テーブルのレコード・データを取得
- CakePHPでカラム属性に別名/エイリアスを付ける仮想フィールド
- CakePHPで日付選択フォームのカスタマイズ
- CakePHP3で現在のコントローラー名・アクション名を取得
- PHPインストールでconfigure: error: freetype.h not foundエラー
- CakePHPでログイン後に元のページにリダイレクトさせる
- CakePHPで全てのモデル/テーブル名一覧を取得
Leave Your Message!