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

解決済みの質問

phpからmysqlへ接続できなくて困っております

phpからmysqlへ接続したいのですが、データベースへ接続できません。

まず、使用環境は以下の通りです。
------------------------------
OS:RedHatLinuxES4
MYSQL:mysql-4.1.7-4.RHEL4.1
PHP:php-4.3.9-3.1

MysqlとPHPはRedHatサイトのパッケージを使用してrpmでインストール
しております。

MySQLのデータディレクトリをデフォルトの/var/lib/mysqlから
/home/mysqlへ変更してます。

それに伴い、/etc/my.cnfのソケットとデータディレクトリの箇所
を変更しております。

<デフォルト設定>
socket=/var/lib/mysql/mysql.sock
datadir = /var/lib/mysql

<変更後>
socket=/home/mysql/mysql.sock
datadir = /home/mysql
------------------------------
色々調べていて原因は分かりました。

mysqlで指定しているソケットの場所と、PHPで指定している
ソケットの場所が違うため、接続できないようです。

phpinfoにて情報を取得したところ、mysqlの箇所でソケットを指定
がデフォルト値の/var/lib/mysql/mysql.sockとなっておりました。

そこで、php.iniファイルのMYSQLの箇所を以下のように修正しました。

<デフォルト設定>
mysql.default_socket =

<変更後>
mysql.default_socket = /home/mysql/mysql.sock

上記変更後、apacheを再起動し、再度phpinfoにて情報を取得した
ところ、以下のようになりました。

MySQL Support項目、
MYSQL_SOCKET → /var/lib/mysql/mysql.sock

#変更されず、反映されていないように見受けられるます

Directive項目、
mysql.default_socket → /home/mysql/mysql.sock

#php.ini修正前は確か、no valueであったと思います。
#従いまして、php.iniの内容が反映されている?
---

その後、mysqlへ接続する、mysql_connect関数を利用して
接続テストを行った結果、エラーとなり接続できませんでした。

<エラーメッセージ>
接続できませんでした: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
---

おそらく、上記のphpinfo情報取得した時の、MYSQL_SOCKETが反映
されていないからだと思っておりますが、php.iniファイルの
mysql.default_socketを修正すれば反映されると思ったにも関わらず
反映されないので、次にどこを修正すれば良いのか分かりません。

ご教授頂けませんでしょうか。宜しくお願い致します。

投稿日時 - 2007-07-06 22:46:25

QNo.3145398

すぐに回答ほしいです

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

がると申します。
んと…portを指定できる場所がありますので、portを「/home/mysql/mysql.sock」と指定してみてください。
具体的には、mysql_connectですと、第一引数を…多分、localhostだろうと思われますので、
localhost:/home/mysql/mysql.sock
と指定してみてください。

また何かわからなくなったり変化があったりしたら書いていただければ、可能な限りご返信差し上げられるかと思います。

投稿日時 - 2007-07-07 00:44:33

補足

がるさん。

ご助言いただきありがとうございます。

がるさんからご教授頂きましたlocalhost:/home/mysql/mysql.sockを
まず、試して見たいと思います、本当に有難う御座います。

月曜に試しますので結果をまたお伝えさせて頂きます。

本来は、mysql_connect関数を使用して接続したいのではなく、
ブログのwordpressのセットアップを完了させたいのです。

そこでは、以下のようになっております。

<wp-config.php>

define('DB_NAME', 'putyourdbnamehere'); // The name of the database
define('DB_USER', 'usernamehere'); // Your MySQL username
define('DB_PASSWORD', 'yourpasswordhere'); // ...and password
define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value
---
define('DB_HOST', 'localhost');
この部分もご教授頂きましたlocalhost:/home/mysql/mysql.sock
を'localhost'の箇所に挿入すれば宜しいかお分かりになりますか。
それとも全く別ものでしょうか。

また、phpinfoで取得した時の情報、
MYSQL_SOCKET → /var/lib/mysql/mysql.sock
mysql.default_socket → /home/mysql/mysql.sock

というのは正しくphp.iniの変更内容が反映されているのか
お分かりになりますようでしたらご教授頂けますと幸いです。

以上、もし宜しければご教授の程、お願い致します。

投稿日時 - 2007-07-07 21:14:42

ANo.2

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

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

回答(3)

ANo.3

がるです。

> 月曜に試しますので結果をまたお伝えさせて頂きます。
はい了解しました ^^

> 本来は、mysql_connect関数を使用して接続したいのではなく、
> ブログのwordpressのセットアップを完了させたいのです。
なるほど。

で…書いていただいたconfigファイルなのですが。
通常ですと、このパターンだと

define('DB_PORT', '/home/mysql/mysql.sock');

という行を追加する方が技術者的にはすっきりするのですが…ぐぐったかぎりだと、どうもうまくいかないっぽいので。
もし「DB_PORT」追加でうまくいかない場合

define('DB_HOST', 'localhost:/home/mysql/mysql.sock');

としていただくとうまくいく…かもしれません。

> また、phpinfoで取得した時の情報、
> MYSQL_SOCKET → /var/lib/mysql/mysql.sock
> mysql.default_socket → /home/mysql/mysql.sock
>
> というのは正しくphp.iniの変更内容が反映されているのか
> お分かりになりますようでしたらご教授頂けますと幸いです。
このあたりは…けっこう今でもトラブルことが時々あります(苦笑
基本的には「PHPをインストールするときに気をつける」のがベストなのですが、うまくいかない場合、port部分の指定で逃げた方が、正直「楽」だったりします。
あと。
PHP.iniってけっこう「あちこち」にファイルがある場合があるので。
phpinfoに出てくる「どのiniをみているのか」を確認 & iniを書き換えたら「Apacheを再起動」するとよいと思います。

以上取り急ぎざっくりとですが。

投稿日時 - 2007-07-09 00:39:25

お礼

がるさん

ご連絡頂きましてありがとうございます。

mysql_connect関数で実行しましたら見事接続できました。
また、define('DB_HOST', 'localhost:/home/mysql/mysql.sock');
でも成功しました。本当にありがとうございました。

それで、最終的にはソケットファイルのディレクトの場所を
/etc/my.cnfを修正してデフォルトの場所に戻しました→/var/lib/mysql/mysql.sock

phpinfoにて取得した情報で、
> MYSQL_SOCKET → /var/lib/mysql/mysql.sock
> mysql.default_socket → /home/mysql/mysql.sock
と食い違いみたいなのが嫌だったので。

当初、データディレクトの場所を変更したことに伴い、socketの
場所も合わせて変更しましたが、socketファイルの場所は
変更する必要がないと判断しました。

その後、mysqlの接続では、通常のlocalhostの指定だけで
接続できるようになりました。

以上、お礼&結果のご報告を致しました。

投稿日時 - 2007-07-09 12:53:05

ANo.1

XAMPPにされたら如何でしょうか?
インストールし、パスワードの設定などのみで、
簡単に使えるようになりますよ。

参考URL:http://www.apachefriends.org/en/index.html

投稿日時 - 2007-07-07 00:30:06

お礼

Tasuke22さん

アドバイスいただきましてありがとうございます。
XAMPPは以前、別のマシンで利用したことがあります。
確かに、簡単な設定で利用できますよね。

しかし、今回はXAMPPではなく構築する必要があるので
もう少し頑張って見たいと考えております。

ご助言ありがとうございました。

投稿日時 - 2007-07-07 17:56:10

あなたにオススメの質問