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

ホームページのドメイン名変更とWordPress

これまで使っていたXREAのサーバにインストールされているソフトウェアのバージョンが古くなってきたので、新しいサーバに引っ越すことにしました。いきなり切り替えることはできないので、利用権が残っている古いサーバと新しいサーバを運用しながら、徐々に切り替えていくことにしました。

現在使っているドメイン名も、いずれは新しいサーバを指すようにするのですが、まだ移行が完了していないので、とりあえずは「従来ドメイン名-new」という名前をつけて運用することにしました。

と、ここで問題が。

WordPressにログインすることができなくなってしまったのです・・・。何が問題なのか、最初はまったく分かりませんでした。ユーザー名が違っているのか、パスワードが違っているのか、それともサーバの.htaccessに問題があるのか、書き込み権限? 読み込み権限? データベース? いろいろな可能性を考えてみたのですが、データベース内の情報などもあわせて考えると、「WordPressをインストールしたときとドメイン名が変わったから」という結論に行き着きました。なぜこれで動かなくなるのかは分からないのですが、ともかく、ログインできなくなってしまったのです。

対処方法はいくつかあるらしいですが、データベースを直接に編集するという方法を採ることにしました。おそらく、もっとも確実な方法なので。

phpmyadminなど、データベース管理ソフトを使って、wp_optionsテーブルを開きます。このテーブルは、option_nameとoption_valueのセットが多数収められたものになっています。この中から、option_nameがsiteurlである列を探し、対応するoption_valueに新しいドメイン名を設定します。

これをコミットすれば、ログインできるようになります。まだできないのならば、別の原因があるということになります。

XREAでWordPress

XREAの無料サーバでWordPressを使おうとしたら少々の問題が生じたので、その対処法をメモしておきます。

環境は次の通り。

Firefox 3.6.10
Apache 1.3.37
PHP 5.2.5
MySQL 5.1.22-rc
WordPress 3.0.1-ja

まずはXREAの管理画面でMySQLのデータベースを作成。そしてWordPressのインストールの手引きに従って、wp-config.phpを編集してからファイルをアップロードし、install.phpを実行します。

ここで最初の問題が発生。install.phpを呼び出すとデータベースに接続できないというエラーが表示されました。この原因はいまでもよく分からず、データベースを削除してから作り直すことで解決されました。

ともかく、必要な情報を書き込み、インストールは完了(おそらくデータベースのテーブル作成のみ)です。

インストール後は作成した管理者アカウントでログインしてダッシュボード画面に移るのですが、明らかにレイアウトが崩れています。本来は3ペイン構成になるのですが、そのようにならず、縦にずらっと並んでしまいます。一目で、スタイルシートまわりに問題があると分かりました。

この解決方法を探してみると、「Xrea+wordpressでダッシュボードの表示が変」で対処方法が解説されていました(記事内で「CORESERVER + WordPress の管理画面がおかしくなる場合の対処法」を参照)。

どうやら、スタイルシートを読み込むphpスクリプトがスタイルシートをtext/htmlで送っており、広告が自動挿入されてしまうため、正しいスタイルシートとして認識されていないらしいのです。IEではこの問題が生じないそうなのですが、おそらくスタイルシートの処理が違うためでしょう。

いくつかの解決方法がありますけれど、わたしは最大限WordPressをモジュールで動作させようと思ったので(その方が処理も軽くなるはず)、次のような.htaccessをwp-adminディレクトリに置きました。

# ファイルのアップロード
<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# プラグインの新規インストール
<files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# テーマの自動アップグレード
<files update.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# コアアップグレード
<files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# スタイルシートを text/html で出力するため広告自動挿入をオフにする
<files load-styles.php>
LayoutIgnoreURI *.php
</files>

これでダッシュボードは正常にレイアウトされるようになりました。