電子書籍の厳選無料作品が豊富!

すみません。今、コマンドラインで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

A 回答 (5件)

ANo.4の方の回答についてですが、そもそもコンパイル時のオプションに指定されていない(らしい)ので、モジュール(Sharedオブジェクトですね、動的なら)のロード等の問題以前の原因と思えます。


したがって、インストールされたバイナリがmysqlを使えない状況という気がします。

2段階の切り分けとして
・まずコンパイル時に有効になっているか
・さらに動的な組み込みだった場合はロードできているか
という原因の究明が可能かと思われます。

対応としてはコンパイルしなおすか、バイナリでのインストールであれば対応したバイナリを再度インストールするかではないでしょうか。

この回答への補足

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

補足日時:2007/11/18 14:42
    • good
    • 0

>PHPinfoを参照してみましたが、mysql欄がなく、--with-mysql といった表示もありません。


この状態ですとNo.3の方の指摘のとおりmysqlモジュールが読み込めていない状態ですね。
・php.iniでmysqlモジュール読み込みの記述が正しいか、
・mysqlのdllはきちんとsystem32以下にあるか、
・mysqlをwindowsと違うパーティションにインストールした場合は
 my.cnfでbase_dirをきちんと設定したか
などをポイントとして確認しなおしましょう。
再インストールはそれからでも遅くありません。

FWと言うのはFire Wall、一般的なポートフィルタを行うセキュリティソフトです。
(厳密な意味ではちょっと違いますが割愛)

この回答への補足

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

補足日時:2007/11/18 14:29
    • good
    • 0

configureのところに--with-mysql指定がないのであればインストールされたPHPはmysqlを使える形でコンパイルされていないということです。



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

参考URL:http://www.apachefriends.org/jp/xampp-windows.html
    • good
    • 0

まずは関数phpinfo()で現在のPHP情報からmysqlが有効になっているかを確認してみてください。



・configureにあるコンパイルオプションでmysqlが指定されているか
→ --with-mysql などの表示があると思います
・mysqlの拡張機能が有効になっているか
→ 上からアルファベット順に有効な拡張機能が並ぶ中にmysqlがあると思います。

またコマンドライン
php -i
でも同様の情報が見れると思います。

この回答への補足

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

補足日時:2007/11/16 17:52
    • good
    • 0

apacheは再起動しましたか。


再起動しないとmysql関連のmoduleが読み込まれません。
phpinfo()で表示されるかどうかで判断しましょう。

他ですと・・・
winXPがサーバですとFWがローカルに対し悪さしてるとかありませんか。

この回答への補足

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

補足日時:2007/11/16 17:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!