Mac OS X Lion にしたら PHP から MySQL が使えなくなりました。
困ったので設定することにしました。設定するにあたって以下のページが大変参考になりました。
MySQL のソケットファイルの場所を調べる
ターミナルを起動して以下のコマンドを実行。
1 | mysql -u root -p |
パスワードを入力すると以下の情報が出てきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | mysql> status -------------- mysql Ver 14.14 Distrib 5.1.54, for apple-darwin10.6.0 (i386) using readline 6.2 Connection id: 4 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.1.54 Source distribution Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /opt/local/var/run/mysql5/mysqld.sock Uptime: 18 hours 53 min 13 sec Threads: 1 Questions: 4 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.0 -------------- mysql> quit |
UNIX socket のところにパスがあります。
php.ini にソケットファイルを記入する
php.ini に設定します。
1 | sudo vi /etc/php.ini |
と思ったらファイルがありません。どこに設定したかなーと思って phpinfo() で調べると php.ini ファイルがありません。Mac OS X Lion にしたのが原因なのかは分かりませんが、昨日まで使えていたので、アップデートを機にこうなってしまったのかもしれません。
というわけで php.ini を新規作成します。
1 2 3 | cd /etc sudo cp php.ini.default php.ini sudo vi php.ini |
以下のように先ほどのソケットを設定します。
1219 | mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock |
PHP 5.3 ならタイムゾーンを設定します。
998 | date.timezone = Asia/Tokyo |
nanasessさんのコメント
MacPorts の PHP だったら, Lion にアップグレードしても大丈夫でした. /opt/local/etc/php5/php.ini です.
webleさんのコメント
私の環境では /etc/php.ini で読み込んでますのでそれが消滅した感じですね。