質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • PHP

    24054questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    7002questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHPにてmysqli_connectがうまくいかない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,357

marimo.

score 40

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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 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

    キャンセル

回答 1

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なども点検してみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/21 00:44

    ご指摘通りに変更致しまして,mysqldとhttpdを再起動しましたが同じエラーが出ました

    キャンセル

  • 2016/06/24 23:33

    こちらの不手際でした.
    ご指摘の通りでした.
    ありがとうございます.

    キャンセル

同じタグがついた質問を見る

  • PHP

    24054questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    7002questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。