WindowsでPHPとMySQL

いろいろとありまして、Windows上でApache+PHP+MySQLという定番環境を作ることになりました。

それぞれ最新のパッケージをダウンロードして、インストール。まあ、ちゃんとしたパッケージですから、たいした問題も起こりません。

そして、PHPからMySQLにアクセスしようとすると…接続できない! しばらく反応がないので、何かにタイムアウトしているようです。MySQL Administratorからは正常にログインができるので、どうやらMySQLの問題ではない様子。PHPに問題があるのかと思いきや、php.iniもちゃんと記述されている。残るはライブラリの問題か? いやしかし、何が正しいライブラリなのかも分からないので、下手に手は出せない…。

などなどと考えながらインターネット上の情報を検索していると、とあるブログにて、Windows Vistaではhostsファイルが悪さをしている、ということを知りました。さっそく検証するためにlocalhostにpingを打ってみると、

*** [::1]に ping を送信しています ::1 から 32 バイトのデータ:
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms

との結果。な、なんじゃこりゃー!(笑)

IPv6アドレスになってるじゃーありませんか。どうやらPHPは、hostsファイルでlocalhostのアドレスを解決しているようです。内部がどうなっているか分かりませんが、IPv6とかIPv4を区別せずに処理するのでしょうか。

というわけで、問題の原因は、localhostに対して接続しようとしていたから、ということでした。ループバックアドレスの127.0.0.1にすれば問題なく接続できたので(もしくはホストに割り当てられたIPアドレス…DHCPなのでループバックを使用)、Windows Vista上のPHP+MySQLでlocalhostは使わないようにしましょう。もしかすると、Windows 7でも同じような現象に陥るかもしれません。

その他のファイル、DLLライブラリなどは、添付品で問題ありませんでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">