• 締切済み

PHP+MYSQL(MYSQLに接続できない)

すみません。今、コマンドラインでMYSQLのデータベースを構築いたのですが、それをPHPで動かそうとすると、Fatal error: Call to undefined function mysql_connect() in ・・・と出て、うまく動きません。いろいろ調べたところ、MYSQLに接続できてないとのことで、php.iniファイルの設定(;extension=のセミコロンをはずすこと等)や、libmysql.dllちゃんとがあるかなど調べましたが、全て設定は正しかったのですが、やはり同じエラーが出ます。コマンドラインではしっかりと、MYSQLが起動してたのですが、何がおかしいのでしょうか?どなたかご教授お願いします。 使用環境 OS:WIN XP SP2 apache2.2 PHP5.25 MYSQL5.04

みんなの回答

  • m057726
  • ベストアンサー率100% (1/1)
回答No.5

ANo.4の方の回答についてですが、そもそもコンパイル時のオプションに指定されていない(らしい)ので、モジュール(Sharedオブジェクトですね、動的なら)のロード等の問題以前の原因と思えます。 したがって、インストールされたバイナリがmysqlを使えない状況という気がします。 2段階の切り分けとして ・まずコンパイル時に有効になっているか ・さらに動的な組み込みだった場合はロードできているか という原因の究明が可能かと思われます。 対応としてはコンパイルしなおすか、バイナリでのインストールであれば対応したバイナリを再度インストールするかではないでしょうか。

iwavan
質問者

補足

回答ありがとうございます。 fire wallの設定やphp.iniの設定などすべて確認しました。 すると、my.cnfというファイルがどこをさがしてもないので、もう一度、ダウンロードして、再インストールすることにしました。今は、PHP、apacheともに正常に動いています。 しかし、phpからDBを読み出すの前のように同じエラーがでるのですが、さらに問題が発生しました。 mysqlをコマンドラインから走らせ、前に作ったデータベースを新しくインストールしたところに入れなおすと、2バイト文字だけ文字化けが起こります。charasetなどいろいろいじってみましたが、治りません。どうすればいいのでしょうか? あと、再インストールした後も、mysqlフォルダ内にmy.cnfというファイルが見つからないのですが、どこにあるのでしょうか? ご教授宜しくお願いします。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.4

>PHPinfoを参照してみましたが、mysql欄がなく、--with-mysql といった表示もありません。 この状態ですとNo.3の方の指摘のとおりmysqlモジュールが読み込めていない状態ですね。 ・php.iniでmysqlモジュール読み込みの記述が正しいか、 ・mysqlのdllはきちんとsystem32以下にあるか、 ・mysqlをwindowsと違うパーティションにインストールした場合は  my.cnfでbase_dirをきちんと設定したか などをポイントとして確認しなおしましょう。 再インストールはそれからでも遅くありません。 FWと言うのはFire Wall、一般的なポートフィルタを行うセキュリティソフトです。 (厳密な意味ではちょっと違いますが割愛)

iwavan
質問者

補足

回答ありがとうございます。 fire wallの設定やphp.iniの設定などすべて確認しました。 すると、my.cnfというファイルがどこをさがしてもないので、もう一度、ダウンロードして、再インストールすることにしました。今は、PHP、apacheともに正常に動いています。 しかし、phpからDBを読み出すの前のように同じエラーがでるのですが、さらに問題が発生しました。 mysqlをコマンドラインから走らせ、前に作ったデータベースを新しくインストールしたところに入れなおすと、2バイト文字だけ文字化けが起こります。charasetなどいろいろいじってみましたが、治りません。どうすればいいのでしょうか? あと、再インストールした後も、mysqlフォルダ内にmy.cnfというファイルが見つからないのですが、どこにあるのでしょうか? ご教授宜しくお願いします。

  • m057726
  • ベストアンサー率100% (1/1)
回答No.3

configureのところに--with-mysql指定がないのであればインストールされたPHPはmysqlを使える形でコンパイルされていないということです。 Windows上での利用経験がないのでコンパイルについて詳細を申し上げられませんが、Apache+MySQL+PHPがセットになっているツール(有名なところではXAMPP)を導入すれば簡単に対応できると思いますので、検討してみてはいかがでしょうか。

参考URL:
http://www.apachefriends.org/jp/xampp-windows.html
  • m057726
  • ベストアンサー率100% (1/1)
回答No.2

まずは関数phpinfo()で現在のPHP情報からmysqlが有効になっているかを確認してみてください。 ・configureにあるコンパイルオプションでmysqlが指定されているか → --with-mysql などの表示があると思います ・mysqlの拡張機能が有効になっているか → 上からアルファベット順に有効な拡張機能が並ぶ中にmysqlがあると思います。 またコマンドライン php -i でも同様の情報が見れると思います。

iwavan
質問者

補足

回答ありがとう御座います。 PHPinfoを参照してみましたが、mysql欄がなく、--with-mysql といった表示もありません。もしかしてMYSQLがインストールされていなかったりするのでしょうか?

  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

apacheは再起動しましたか。 再起動しないとmysql関連のmoduleが読み込まれません。 phpinfo()で表示されるかどうかで判断しましょう。 他ですと・・・ winXPがサーバですとFWがローカルに対し悪さしてるとかありませんか。

iwavan
質問者

補足

早速の回答ありがとう御座います。apacheは何回も再起動しています。それでも直りません。どうすればいいのでしょうか? あと、FWって何でしょうか?