XAMPP for Windowsインストール後の設定

久しぶりにXAMPPをダウンロードして使ってみたら、けっこう仕様が変わっていたようにみえた。最新バージョンは1.7.4、リリース日が2011/1/26になっている。ちょっと戸惑うところがあったので、実際に行った設定を整理してみた。
ちなみに、XAMPP for Windowsのトップページから、XAMPP Liteが無くなっていた。けっこう好きだったんだけど……。

XAMPPの推奨設定

推奨かどうかはわからないけど、XAMPPをインストールして最初に開く画面「XAMPP Windows版へようこそ!(http://localhost/xampp/)」にある「セキュリティ」を開くと、警告になっている項目がいくつかある。

  • 「XAMPP Windows版へようこそ!」にベーシック認証のパスワードを設定する
  • MySQLのrootユーザにパスワードを設定する

この二つの設定はこの画面上で行えるから、そのまま設定した。
他に、Filezilla(FTPサーバ)とMercury(メールサーバ)も出ているけど、デフォルトでは動作しないし使わなければ設定不要。

PHPMyAdminが開けるようにする

XAMPPのメイン画面でMySQLのrootパスワードを設定すると、PHPMyAdminが開けなくなってしまう。

#1045 - Access denied for user 'root'@'localhost' (using password: NO)
設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました
MySQL サーバに接続しようとしましたが拒否されました。config.inc.php のホスト、ユーザ名、パスワードが MySQL サーバの管理者から与えられた情報と一致するか確認してください

1.7.4より前のバージョンでこういうことは起きなかったと思うけど、メッセージにあるように設定したrootユーザのパスワードをconfig.inc.phpに記述する必要がある。
config.inc.phpは、「%XAMPP\phpMyAdmin」にある*1

/* %XAMPP\phpMyAdmin\config.inc.php */

/* Authentication type and info */
$cfg['Servers'][$i]['auth_type']     = 'cookie';      // Authentication method (config, http or cookie based)
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '(設定したパスワード)';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['AllowNoPassword'] = true;

同じネットワーク内のPCからXAMPP関連の画面を開けるようにする

XAMPPをインストールして最初から使える画面、たとえば「http://localhost/xampp/」やセキュリティの確認画面や、PHPMyAdminなど。これらはインストールしたPCから開くことはできるけど、同じネットワークにある他PCから開くと、403エラーと次のメッセージが出力されてしまう。

新しいXAMPPのセキュリティコンセプト:
は、要求のディレクトリへのアクセスは、ローカルネットワークから入手可能です。
この設定は、ファイル"で設定することができますのhttpd - xampp.conf " 。

これもおそらく、バージョン1.7.4から追加された設定だと思う。このままで問題ないことも多いと思うけど、他のPCからも開けるようにしたいのであれば、メッセージに従ってファイル[httpd-xampp.conf」を編集する。

# 場所: %XAMPP\apache\conf\extra\httpd-xampp.conf

#
# New XAMPP security concept
#
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/8 
    ErrorDocument 403 /error/HTTP_XAMPP_FORBIDDEN.html.var
</LocationMatch>

「Allow from 127.0.0.0/8」この箇所を適切な値に変える必要がある。今回の自分の環境だと、「192.168.1.XXX」のIPが振られた端末から開けるようになればいいので、次のように変更する。

# 場所: %XAMPP\apache\conf\extra\httpd-xampp.conf

#
# New XAMPP security concept
#
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/8
    Allow from 192.168.1.0/24
    ErrorDocument 403 /error/HTTP_XAMPP_FORBIDDEN.html.var
</LocationMatch>

これで同一ネットワークないの他PCからXAMPPやPHPMyAdminが開けるようになる。この設定はApache2を再起動した時点から有効になる。設定した値が不適切だとApacheが起動しないので、その場合は変更箇所を確認してみる。
「Allow from 127.0.0.0/8」をコメントアウトするのをやめました。確かに不要ですね。はてブでアドバイスくれたひと、どうもありがとう!

PHPのエラー出力を抑制する

KonaWikiをインストールして開いてみたら、「NOTICE」のメッセージがバカスカ出力されてしまった。みた感じでは警告程度のメッセージ。これも従来バージョンのXAMPPでは起きなかったことだな……。対処方法はいろいろあると思うけど、単純にメッセージ出力を抑えたかっただけなので、ファイル「php.ini」を編集した。

php.iniで次のような記述があるので、

; 場所: %XAMPP\php\php.ini
display_errors=On

「On」を「Off」にするだけ。
php.iniを書き換えた時点で設定は有効になる。

*1:%XAMPPはXAMPPのインストール先