mysqli_connectがうまくいかず
PHP Warning: mysqli_connect(): (HY000/2002): Can't connect to local MySQL server through socket '/etc/php.ini' (13) in /home/hoge/fuga.php on line 83
というエラーを吐きます./etc/php.ini
では
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-socket
mysql.default_socket = /var/lib/mysql/mysql.sock
と存在している/var/lib/mysql/mysql.sock
を指定しています(mysql_config --socket
コマンドで確認したファイルを指定).
また/etc/my.cnf
には
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
と記述しています.
個人的によくわからないのは,socketを/var/lib/mysql/mysql.sockと指定しているにもかかわらず,Can't connect to local MySQL server through socket '/etc/php.ini'
と/etc/php.iniを指摘される点です.
httpd restartもmysqld restartも行いましたが同様のエラーを吐かれました.
解決のほどよろしくお願い致します.
※追記:
︙
$mysqlConnect = mysqli_connect("localhost", "USER", "PASSWORD") or die ("mysql connect failed");
if (mysqli_select_db($mysqlConnect, "DATABASE")) {
date_default_timezone_set('Asia/Tokyo');
︙
/home/hoge/fuga.php on line 83
というのは$mysqlConnect変数がある行になります.
以下はps ax | grep mysqld
の結果です.(Markdownがうまく機能しないのでベタ書きしました)
mysqldのステータスについてはプロセスが動いていることが確認できました.(service mysqld status -> mysqld(pid 11951) is running...
)
[taro@fuga hoge]$ ps ax | grep mysqld
11843 ? S 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pidi --basedir=/usr --user=mysql
11951 ? Sl 0:19 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pidi --socket=/var/lib/mysql/mysql.sock
13273 pts/0 S+ 0:00 grep mysqld
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+2
mysql.default_socket=~
↓↓↓
mysqli.default_socket=~
追記です。
よーくエラーを読んでみると、
Can't connect to local MySQL server through socket '/etc/php.ini'
/etc/php.ini というソケットを通してローカルのMySQLサーバーに接続できません。
って書いてあります。
どう見ても、mysqli.default_socket=/etc/php.ini
と書いてあるように思えます。
$mysqlConnect = mysqli_connect("localhost", "USER", "PASSWORD",
"DBNAME", 3306, "/var/lib/mysql/mysql.sock");
ってやったらどうでしょうか。
その前に、きちんと/etc/php.ini
が読み込まれているかどうか確認するのも手ですね。
何かがおかしいですよ。phpinfo()
の出力を見てみることをお勧めします。
.htaccess
なども点検してみてください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
attakei
2016/06/19 01:34
まずは、実際に実行させているPHPのコードを提示した方が、回答を得られやすいと思います。
mysqli_connect()の引数に/etc/php.iniが入っている可能性がありそうですが、ソースがわからないので、想像でしか回答を出せないかと思いますので。
marimo.
2016/06/19 10:26
事情によりコード全文を示すことは出来ません.
ですのでmysqli_connect行のみを提示させていただきます.
ご了承ください.
nakamori-daisuk
2016/06/19 13:38
基本的なことですが、
サーバが起動しているかの確認をしてみてはどうでしょうか?
ps ax | grep mysqld