こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLとの間でのソケットエラー

あまりプログラミングを知らないので言葉がおかしいところあったらすみません。

とあるレンタルサーバーを借りてphpのプログラム(WordPress)を動かしています。
WordPressはME 2.2.3、phpは4.4.2、別のサーバーで動いているMySQLは4.0.26です(WWWサーバー、MySQLサーバーは専用ではなく共有)。

ここ数日なのですが、ブログの更新時やコメント投稿時に以下のエラーが出るようになりました(但し記事やコメント自体は投稿できています)。

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) on line: 294

ネットで検索したところ、phpとMySQLをつなぐソケットというものの位置がおかしくなっていることが一因のようです。

phpinfo()で返ってくる値は"MYSQL_SOCKET /tmp/mysql.sock"となっており、
一方phpMyAdminでログインしてMySQLを確認したところ"socket /home/mysql/mysql.sock /home/mysql/mysql.sock"となっています。

このズレがエラーを引き起こしているのではないかと思うのですが、あいにくユーザーにはこれらを変える権限はないようです(php.iniを設定することは不可能)。

私がWordPressをインストールしなおして設定をいじれば対応できるようですが、その前にこうしたズレはよくあることなのか、それともレンタルサーバー側に問い合わせるべきなのか疑問に思ったので質問しました。
よろしくお願いします。

投稿日時 - 2008-01-08 15:45:04

QNo.3661145

困ってます

質問者が選んだベストアンサー

プログラムの修正などなく、急に起こり始めたのならサーバ会社に
問い合わせればいいかと思います。対応してもらえればそれで解決です。
対応してもらえないとなればご自分でソースを修正するしかないですが。

投稿日時 - 2008-01-08 19:08:25

お礼

回答ありがとうございます。

WordPressはプラグインの入れ替え、バージョンアップなどをしたのですが、コアの部分には手をつけてないはずです。なにかの拍子にずれてしまったのでしょうか……。

こうしたズレは起きたままでも問題なく動作するものなのでしょうか。

投稿日時 - 2008-01-09 09:00:38

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

mysql.default_socket という値が PHP_INI_ALL らしいので、
ini_set('mysql.default_socket', '/home/mysql/mysql.sock ');
みたいなことをしてみたらどうでしょうか?

http://php.net/manual/ja/ref.mysql.php
http://jp2.php.net/manual/ja/function.ini-set.php

投稿日時 - 2008-01-11 00:13:16

補足

結果報告です。

プラグインを全部止めて更新テストしたところうまくいきましたので、あれこれ試したところ、どうもバージョンアップしたプラグインが他のプラグインと衝突するらしいことがわかりました。

結局衝突するものを他の代替プラグインで交換しました。
お騒がせしてすみませんでした。お二方の回答ありがとうございました。

投稿日時 - 2008-01-12 16:36:29

お礼

回答ありがとうございます。
まずここまでの経過報告です。

レンタルサーバー側にほぼ質問と同じ内容で「食い違っているのではないでしょうか」と聞きましたところ、
「当方はWEBサーバーとMySQLサーバーは別になっています。phpinfo()のMYSQL_SOCKETはWebサーバーのローカルで用いられる際に使われ、デフォルトでは無効となっているので、データベースのご利用には問題ありません」という旨のメールが返ってきました。
私は納得しましたが、エラーが出ることには変わりありません(WordPressではMySQLサーバーの名前は間違いなく設定していますし、データベースを覗いてみても記事自体のレコードは確かに存在します)。

------
さてこの回答をいただき、さしあたり以下のことを試しました。

1) WordPressがおいてあるディレクトリの.htaccessに以下の記述を追加してました。

php_value mysql.default_socket /home/mysql/mysql.sock

2) phpinfo()を試したところ、mysql.default_socketのlocalの値が入力した通りのものになっていました。

3) テストで更新しましたところ、やはりエラーが出ました。内容は以下のとおりです。

Can't connect to local MySQL server through socket '/home/mysql/mysql.sock' (2) on line: 294


……とりあえず、これからプラグインを全部止めて更新テストしてみます。回答ありがとうございました。

投稿日時 - 2008-01-11 20:59:25

あなたにオススメの質問