0

私は現在、MySQL と PHP を実行している Web サイトを持っており、これらはすべて機能しています。自分のコンピューターでサイトを操作できるように WAMPServer をインストールしようとしましたが、サイトを正しく機能させるのに問題がありました。

HTML および PHP ファイルは正しく機能します ( http://localhost/index.phpなどに移動することにより)。しかし、一部のページには「この Web ページは利用できません」(Chrome の場合) または「Internet Explorer ではこの Web ページを表示できません」と表示されるため、サーバーにエラーがあると思われます。通常、「おっと! このリンクは壊れているようです」または IE の標準 404 ページが表示されます。

私のサイトの各ページには、すべてのデータベース トランザクションを処理するクラスのインスタンスを設定するための include() 呼び出しがあります。このクラスは、コンストラクターでデータベースへの接続を開きます。コンストラクターの内容をコメント アウトすると、ページを読み込めるようになりますが、ページの後半でエラーが発生することは理解できます。

含まれているファイルの内容は次のとおりです。

class dbAccess  {
    private $db;

    function __construct() {
        $this->db = mysql_connect("localhost","root","") or die ("Connection for database not found.");

        mysql_select_db("dbName", $this->db) or die ("Database not selected");
    }
    ...
}

ここで起こっていることのメモとして。ローカル マシンではなく、自分のサイトでデータベースを使用しようとしています。dbName、user、および password の実際の値は、それらをデータベース ソフトウェア (Navicat Lite) にプラグインすると機能し、最終版のサイトで正しく機能するため、問題はこれらの値自体にあるとは思いませんが、むしろApache または Wamp を使用した設定。

これは、サイトにログインしようとしたときの Apache エラー ログの抜粋です。

[Wed Apr 14 15:32:54 2010] [notice] Parent: child process exited with status 255 -- Restarting.
[Wed Apr 14 15:32:54 2010] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Apr 14 15:32:54 2010] [notice] Server built: Dec 10 2008 00:10:06
[Wed Apr 14 15:32:54 2010] [notice] Parent: Created child process 1756
[Wed Apr 14 15:32:55 2010] [notice] Child 1756: Child process is running
[Wed Apr 14 15:32:55 2010] [notice] Child 1756: Acquired the start mutex.
[Wed Apr 14 15:32:55 2010] [notice] Child 1756: Starting 64 worker threads.
[Wed Apr 14 15:32:55 2010] [notice] Child 1756: Starting thread to listen on port 80.

オンラインで解決策を検索してみましたが、解決策を見つけることができませんでした。この問題を解決するためにさらに情報が必要な場合は、お気軽にお問い合わせください。

(もう1つ注意してください。このコンピューターにはSkypeすらありません。この競合は、Wampの問題に対するデフォルトの応答であるように思われるため、問題になるとは思いません。)

[編集: 無関係な問題として解決されたため、エラー ログからエントリを削除しました] [編集: ホストのドキュメントを調べたところ、80 と 443 (HTTP と HTTPS の場合) 以外のすべてのポートがブロックされていることがわかりました。ここでやろうとしていたような外部接続を許可します。ローカル データベースに変更しましたが、まだ同じエラーが発生します。問題は未解決です。]

4

2 に答える 2

2

私もこの問題に遭遇しました。私にとっての解決策は、mysql_connect メソッドをそのクラスから移動し、直接呼び出すことでした。

于 2011-02-20T19:00:39.087 に答える
0

ちょっとApacheをバイパスしましょう。ディレクトリ <wamp>/bin/php/php5.3.0 には、cli sapi (コマンド ライン バージョン) を実装する php.exe があります。

ファイルtest.phpをそのディレクトリに置きます

<?php
if ( !extension_loaded('mysql') ) {
    die('the mysql extension is not present');
}

echo 'phpversion=', phpversion(), "\n"; flush();
echo 'client_info=', mysql_get_client_info(), "\n"; flush();

$mysql = mysql_connect('localhost', 'root', '') or die(mysql_error());
echo "seems to be working\n"; flush();

echo 'server_info=', mysql_get_server_info($mysql), "\n"; flush();

内容として。次に、コマンド シェルを開き、ディレクトリに「移動」します。

c:
cd c:\wamp\bin\php\php5.3.0

そして走る

php.exe -f test.php

次のようなものを出力する必要があります

phpversion=5.3.2
client_info=mysqlnd 5.0.7-dev - 091210 - $Revision: 294543 $
seems to be working
server_info=5.1.37

(ただし、バージョンはケースによって異なります)

于 2010-04-15T11:43:19.720 に答える