XREAでPhpMyAdminにログインできない

とてもとても頻繁に起こっている問題のようです。

最近、XREA内でサーバを移転したのですが、その際に、データベースの引っ越しを行いました。前のサーバでデータベースをエクスポートし、新しいサーバでインポートします。

そして、以前にも書きましたが、WordPressはサイトのURLが変わると、データベース内の情報を書き替えなければうまく動作してくれません。そのため、何らかの方法でデータベースにアクセスしなければならないのですが、よく使われるのがPhpMyAdminです。とくにXREAは自動インストール機能を用意しているので、これを使おうとするのが普通でしょう。

しかし、XREAが提供しているPhpMyAdmin、どういうわけか、ログインできないという問題があります。いや、ログインできるのですが、ちょっとコツがいるのです。また、サーバによっては、設定を変更しなければならない場合もあり、原因と対処方法がよく分からないという、何とも微妙な状況になっています。ちょっと検索するだけで、同じような相談が多数見つかり、これだけ問題になっているなら、根本的に解決してくれよ…と思います。まあ、本当に原因が分からないのかもしれません。

おそらく、最も参考になるのがXREAのphpMyAdminのログイン問題(「ブログだった」より)です。しかし、わたしはこれを試しても効果がありませんでした。

それでは何をしたかというと、まずはログイン画面を出して、ユーザー名とMySQLのパスワードを入力、そしてEnter。パスワードが違います、というようなエラーメッセージが出るのですが、ここでおもむろにCtrl+F5を押してページをリロードします。もしかするとF5でもいいのかもしれません。すると、どういうわけか、PhpMyAdminの管理画面にアクセスできるようになります。ちゃんとテーブルを編集できたりするので、正しくログインできているようです。

なぜかは分かりませんが、なんにせよ、使えているので、いいものとします。

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ライブラリなどは、添付品で問題ありませんでした。