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

解決済みの質問

MySQLとApacheとの関係

プログラミング初心者です.今,PHP5.2.9とMySQL5.1.34とApacheを使ってプログラミングをやっているのですが,PHPにおいてデータベースと接続するのができなくて困っています.

私は今,(サンプル本から)データベースの内容をHTMLに表示させる処理を書いたのですが,アドレスを入力してもApacheが完全に停止してしまい動作しなくなってしまいます.しかし,他の単純なphpやHTMLのプログラムはスムーズに動作します.こうなってしまうのが考えられる原因を教えていただきたくて質問させていただきました.コードは以下のとおりです.また,保存場所はMySQLはC:/MySQL/ 作成したDBはC:/MySQL Server 5.1/Data です.
また,ApacheについてなんですがC:/workspace/ のフォルダにプログラムを入れる感じです.申し訳ありませんがよろしくお願いします.

<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<title>簡易アドレス帳(MySQL-PHP)</title>
</head>
<body>
<?php
$dbname = "test";
$user = "root";
$passwd = "password";
$tbname = "addrbook";
$host = "localhost";

$db = mysql_connect("$host", "$user", "$passwd");
if (!$db){
echo "データベースの接続でエラーが発生しました<BR>\n";
exit;
}
mysql_select_db($dbname);
$sel = mysql_query("SELECT name,telno,email FROM $tbname");
if (!$sel) {
echo "検索でエラーが発生しました<BR>\n";
exit;
}

echo "<table border=\"1\">\n";
echo " <caption>簡易アドレス帳(MySQL-PHP)</caption>\n";
echo " <tr><th>名前</th><th>電話番号</th><th>メールアドレス</th></tr>\n";

while ($row = mysql_fetch_row ($sel)) {
echo " <tr>\n";
echo " <td>".$row[0]."</td>\n";
echo " <td>".$row[1]."</td>\n";
echo " <td>".$row[2]."</td>\n";
echo " </tr>\n";
}
echo "</table>\n";

mysql_free_result ($sel);
mysql_close($db);
?>
</body>
</html>

補足

あの一つ一つエラーを見ていった結果,

$db = mysql_connect("$host", "$user", "$passwd");

の文がapacheの停止に原因があることがわかりました.ファイルの保存場所,mysqlの設定方法などの原因なのでしょうか?

投稿日時 - 2009-06-29 20:36:36

QNo.5084942

すぐに回答ほしいです

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

> どこをどう確認すればよいかわからないのですがそこも教えていただけませんか

エラーログの中に"PHP Warning"や"PHP Error"のような記述はありませんでしたか?
もしなければ次はコマンドから直接PHPを実行する方法を試してみて下さい。
やり方はコマンドプロンプトで

php "PHPファイル名"

で実行できると思います。
何らかのエラーログがないと原因が特定できないので…お手数ですが色々試してみて下さい。
私の方でもその他、原因について調査してみます。

投稿日時 - 2009-06-30 23:39:47

補足

早速のご回答ありがとうございます.

エラーログを見た結果,PHPWarningでしたらたくさんありました.
1つ文を引っ張ってきました.
PHP Warning: PHP Startup: Unable to load dynamic library 'c:\\php\\ext\\php_pgsql.dll' - \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r\n in Unknown on line 0

どういう意味なのかわかりますでしょうか?
何度もご返答いただきまして誠にありがとうございます.
申し訳ありませんがよろしくお願いします.

投稿日時 - 2009-07-01 01:29:14

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

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

回答(4)

ANo.4

> PHP Warning: PHP Startup: Unable to load dynamic library 'c:\\php\\ext\\php_pgsql.dll' ...

これはPHPからPostgreSQL(DB)を使用するための拡張ライブラリ(dll)が読み込めていないという警告です。
これ自体、Apacheを落とす原因にはならないと思いますが…。

お手数ですが、参考URLにあるようにPHPのphp.iniファイルとApacheのhttpd.confが設定されているかご確認願えますか?

#明確な回答ができなくて申し訳ないです。
#私自身、Linux上でApache + MySQL + PHPを使用しているのでWindows環境となるとちょっと…。

参考URL:http://allabout.co.jp/internet/database/closeup/CU20040928A/

投稿日時 - 2009-07-01 03:38:20

お礼

返信ありがとうございます。

これからやってみます。

投稿日時 - 2009-07-10 16:38:41

ANo.2

> ""をのぞいてみましたが変わりはありませんでした.

そうですか…。
それでは下記の2点でエラーログが取れるか試してみて下さい。

[1つ目]
----------
$db = mysql_connect("$host", "$user", "$passwd");
if (!$db){
echo "データベースの接続でエラーが発生しました<BR>\n";
exit;
}
----------
の箇所を
----------
$db = mysql_connect("$host", "$user", "$passwd");
echo mysql_error(); // 追加
if (!$db){
echo "データベースの接続でエラーが発生しました<BR>\n";
exit;
}
----------
としてmysql_error()関数が実行されるか確認してみて下さい。


[2つ目]
PHPで発生したエラーは基本的にApacheのエラーログに出力されます。
Apacheをインストールしたディレクトリ配下に "error.log" のような名前のファイルがあると思いますのでそれを確認してみて下さい。

投稿日時 - 2009-06-30 03:40:22

補足

ご返答ありがとうございます.

1つ目をやってみましたが,Apacheは停止してしまいました.

2つ目なんですがerror.logはあったんですが,どこをどう
確認すればよいかわからないのですがそこも教えていただけませんか

投稿日時 - 2009-06-30 17:44:17

ANo.1

PHPの記述が間違っていますよ。

$host, $user, $passwdはそれぞれ変数なので、
$db = mysql_connect("$host", "$user", "$passwd");
の部分のダブルクォーテーションを除いて
$db = mysql_connect($host, $user, $passwd);

としてもう1度同じ現象が起きるか試してみて下さい。

投稿日時 - 2009-06-30 00:18:57

補足

ご回答ありがとうございます.

""をのぞいてみましたが変わりはありませんでした.

投稿日時 - 2009-06-30 03:05:47

あなたにオススメの質問