PHPからMySQL接続で”No such file or directory”

PDOによりMySQLに接続しようとしたところ、mysql.sockファイルが無いという意味のエラーです。

 

PHPで設定されているmysql.sockのパスが見てみます。

php --ri pdo_mysql

〜(省略)〜

pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

なお、本来のsockファイルのパスは

/var/lib/mysql/mysql.sock

です。

 

そこで、php.iniファイルを編集します。

/etc/php.ini

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

ここで、php --ini を見ると、
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)

となっており、先程編集したphp.iniを見ていないようです。

そこで、先程の/etc/php.iniを/usr/local/libにコピーしました。
すると、
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/lib/php.ini
となり、php.ini内容が反映されたようです。

では、php --ri pdo_mysql を見てみます。
pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock
php.iniの内容が反映されました。

 

詳細!PHP 7+MySQL 入門ノート

詳細!PHP 7+MySQL 入門ノート

 
パーフェクトPHP

パーフェクトPHP

 
PHPフレームワーク Laravel入門

PHPフレームワーク Laravel入門

 
PHP+MySQLマスターブック

PHP+MySQLマスターブック

 
基礎からのMySQL 第3版 (基礎からシリーズ)

基礎からのMySQL 第3版 (基礎からシリーズ)

 
詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)

詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)