これは、WAMP / Windows 7 にインストールした PHP 5.3.3 では機能しません。
mysql_connect('localhost', 'root', '');
の後Maximum execution time
、次のエラーが表示されます。
警告: mysql_connect() [function.mysql-connect]: [2002] 接続先が失敗したため、接続試行に失敗しました (tcp://localhost:3306 経由で接続しようとしています)
警告: mysql_connect() [function.mysql-connect]: 接続先が一定時間後に適切に応答しなかったため、接続の試行が失敗したか、接続されたホストが応答しなかったために確立された接続が失敗しました。
これは機能します:
mysql_connect('127.0.0.1', 'root', '');
PHP docsから、これと関係があるかどうか疑問に思っています:
「localhost」または「localhost:port」をサーバーとして指定すると、MySQL クライアント ライブラリはこれをオーバーライドし、ローカル ソケット (Windows では名前付きパイプ) に接続しようとします。TCP/IP を使用する場合は、「localhost」の代わりに「127.0.0.1」を使用します。MySQL クライアント ライブラリが間違ったローカル ソケットに接続しようとする場合は、PHP 構成と同様に正しいパスを設定し、サーバー フィールドを空白のままにする必要があります。
これは私のphp.iniからのものです:
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysql.default-socket
mysql.default_socket =
これはバグですか、それとも何が起こっているのですか?
更新: MySQL 5.1.36 を使用していますが、それ以外の場合は接続できます。言い忘れましたが、これは PHP 5.3.0 および 5.2.11 で動作します。もちろん、 に変更localhost
する127.0.0.1
こともできますが、 を使用できない理由を知りたいですlocalhost
。
更新 2127.0.0.1 localhost
: hosts ファイルに追加 (コメント解除) すると機能しました。しかし、なぜこれが必要なのですか?