• 締切済み

MySQL関数が動かない

PHP+MySQLでCall to undefined function mysql_connect()エラーとなり困っています。 各Ver MySQL=5.1.32 PHP=5.2.9 Apache=2.2.1.1 コマンドラインからは全て動作しています。 (データべース・テーブル作成・SELECT文等) http:localhostでは、PHPも動作しています。 のでApacheも大丈夫だと思います。 http:localhostで、PHPのMySQL関数が動作しません。 extension=PHP_mysql.dllのコメント[;]は外しました。 PHP_mysql.dllの保存場所はc:/php5/ext/ なぜか、SQLite用関数は動きます。 (同じ階層にあるc:/php5/ext/PHP_sqlite.dll) 環境変数[PATH]にc:\php5を登録。 libmysql.dllは何度試しても動かなかったので、インターネット内にある情報を参考に全ての場所にコピペで置きました。 php5/直下 Apache2.2/bin/直下 system32/直下 ウィルスバスター2009を停止して試しましたがダメでした。 初心者の私にはもうどうして良いかわかりません。 良きアドバイスをよろしくお願いします。m(_ _)m

みんなの回答

回答No.3

どうも。 自分もついさっきまで、ほぼ全くおんなじ現象で悩んでいましたが、解決できたので、参考になるかどうか分かりませんが。 自分の場合ですが、apacheのhttpd.confが原因でした。 このファイルで、LoadModuleを追加する記述をしたと思うのですが、この記述が問題でした。自分ははじめ、 Dynamic Shared Object (DSO) Supportの欄で、LoadModuleの最後に LoadModule php5_module "C:/php/php5apache2.dll" # # Configuring PHP5/Server-Module # <IfModule mod_php5.c> AddType application/x-httpd-php .php PHPIniDir "C:/php/php5" </IfModule> と記述していましたがこれを <IfModule mod_php5.c> AddType application/x-httpd-php .php PHPIniDir "C:/php/php5" </IfModule> LoadModule php5_module "C:/php/php5apache2.dll" # # Configuring PHP5/Server-Module # 要は、<>内の構文をPHP5のLoadModuleより前に置き換えただけです。 これで、ちゃんとmysqlを使ったPHPファイルをちゃんと読んでくれました。 あいにく、SQLiteの方は動作確認はしておりませんがもし参考になったらなと思います。

abuhiro
質問者

お礼

返信ありがとうございました。 記載に順序があったのですね。 非常に勉強になりました。 apacheやphpの各種設定も勉強しないとダメみたいですね。 次はサーバー設定も勉強してみます。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • 11spec0
  • ベストアンサー率83% (10/12)
回答No.2

こんばんは。不足情報としてどのようなエラーが吐き出されるのでしょうか?その内容がかなり重要な部分になりますので。

abuhiro
質問者

補足

Fatal error: Call to undefined function mysql_connect() エラーです。 あと、怪しい点がありました。 参考書に載っていたので、Apacheのhttpd.confに以下を追記しています。 ――――――――――――――――――――――――――――――――― AddType application/x-httpd-php .php LoadModule php5_module "c:php5/php5apache2_2.dll PHPIniDir "c:/php5/  ←ここが何かに影響しているのでしょうか? Alias /hajimete_php5/ "c:/hajimete_php5/" <Directory c:/hajimete_php5"> Options Indexes FollowSymLinks AllowOverrride Options Order allow,deny Allow from all DirectoryIndex index.php index.html </Directory> ――――――――――――――――――――――――――――――――― PHP.iniはc:/php5/に入っていますが、 c:/hajimete_php5としないと、PHPが実行されません。 経緯をたどると、 (1)参考書Aで上記項目を追加。(データベースはSQLiteを使用)  PHPIniDir "c:/php5/をc:/hajimete_php5として、参考書を全て実行できました。  SQLiteは実行できます。 その次に (2)参考書Bを購入し、(データベースはMySQLを使用) extension=PHP_mysql.dllのコメント[;]は外し、 libmysql.dllを php5/直下 Apache2.2/bin/直下 system32/直下 に全てにコピーで配置しました。 extension_dir c:/php/ext等の設定は全て同じでした。 php.iniはc:/php5/に置いているのに、 c:/hajimete_php5としないと、PHPが実行されないのが理解できません。 尚、設定項目をいじっているphp.iniはc:/php5/にあり、 試しにそれをコピーしてc:/hajimete_php5に置いてみても動作しませんでした。 Apacheに追記した PHPIniDir "c:/php5/ は「php.iniはc:/php5/にありますよ」という解釈は間違いでしょうか? また、PATH変数がc:/php5とある為、c:/hajimete_php5しても動作するのでしょうか? もう何がなんだか解らなくなってます。(;一_一)

すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

PHPでMySQLに接続失敗 http://oshiete1.goo.ne.jp/qa2147010.html こう言った事とか?(詳しくはないですけど)

abuhiro
質問者

補足

まさしく、エラーメッセージやプログラムの構成まで、そのとおりです。 ただし、extension=PHP_mysql.dllのコメントを外すということと、 libmysql.dllを指定場所に置くというのは、 php5/直下 Apache2.2/bin/直下 system32/直下 やってみたのですが、どうも駄目みたいでした。 AddType application/x-httpd-php .php LoadModule php5_module "c:php5/php5apache2_2.dll PHPIniDir "c/hajimete_php5  ←やっぱり怪しい? Alias /hajimete_php5/ "c:/hajimete_php5/" <Directory c:/hajimete_php5"> Options Indexes FollowSymLinks AllowOverrride Options Order allow,deny Allow from all DirectoryIndex index.php index.html </Directory> 全部アンインストするのが手っとり早いのでしょうか?^^; できれば、SQLiteとMySQLを同時に動かしたい為、解決したかったのですが・・・。

すると、全ての回答が全文表示されます。

関連するQ&A