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

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

A 回答 (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の方は動作確認はしておりませんがもし参考になったらなと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/11 09:17

こんばんは。

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

この回答への補足

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しても動作するのでしょうか?

もう何がなんだか解らなくなってます。(;一_一)

補足日時:2009/03/22 13:38
    • good
    • 0

PHPでMySQLに接続失敗


http://oshiete1.goo.ne.jp/qa2147010.html

こう言った事とか?(詳しくはないですけど)

この回答への補足

まさしく、エラーメッセージやプログラムの構成まで、そのとおりです。
ただし、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を同時に動かしたい為、解決したかったのですが・・・。

補足日時:2009/03/22 13:56
    • good
    • 0

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