XAMPPをVistaで使おうとしてハマるワナ
2009-02-04 00:56 | IT
Windows環境で使っているXAMPPに含まれるApacheやPHPのバージョンが若干古いので、最新のものに入れ替えようとしてハマったことを記します。
環境
- Windows Vista SP1
- XAMPP 1.7.0
- Apache 2.2.11
- MySQL 5.1.30
- PHP 5.2.8
- phpMyAdmin 3.1.1
- FileZilla FTP Server 0.9.29
- Mercury Mail Transport System v4.52
- OpenSSL 0.9.8
apache friendにある1.7.0のZIPアーカイブ版を利用しました。
ダウンロード後、C:\xamppに展開することにします。
PHPのcliでエラー
早速、PHPが正常に動くか確認するため、コマンドラインでバージョン情報を確認します。
c:\xampp\php>php -v PHP 5.2.8 (cli) (built: Dec 8 2008 19:31:23) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies
すると、もれなく
と、エラーが出現します。強制終了の雰囲気ですが、コマンドは実行されます。
うーん、気持ち悪い。
原因は既出で、php_mysqli.dllが原因のようです。
extension=php_mysqli.dll
↓
;extension=php_mysqli.dll
とコメントにすることで対処できるんですが、じつは1.7.0では(どのバージョンからは不明)対応済みのdllが用意されています。
xampp\php\extをのぞいてみると、「php_mysqli_5.0.51a.dll」というファイルがあり、これを「php_mysqli.dll」にリネームすることで回避できます。
php -i #snip mysqli MysqlI Support => enabled Client API library version => 5.1.30 Client API header version => 5.0.51a
バージョンがバラバラなのがかなり気持ち悪いんですが、MySQL5.1.30に対しても問題なく動きます。
eAcceleratorでエラー
デフォルトではOFFにされていますが、PHPのアクセラレータのひとつ、eAcceleratorがバンドルされているので、これを有効にしてみます。
php.iniを修正します。
よくあるミス
XAMPPにはphp.iniが2つあります。
ひとつはxampp\php の下、もうひとつはxampp\apache\bin の下。
前者はCLI用のiniファイルで後者はApacheモジュール用のiniファイルですので、注意しましょう。
セミコロンをすべて外します。
こういう作業は矩形選択(箱型選択)できるエディターが便利ですね。
(上記エディターはK2Editor)
さて、実行してみましょう。
php -i #何も表示されずに終わってしまう・・・ php -v #こっちもだ・・・
ログもエラーも出ないので、困った・・・。
CLIからの追跡はあきらめて、PHPモジュールの方のphp.iniのeAcceleratorを有効にして、ApacheからPHPを実行して経過をみてみます。
すると、Apacheが起動せず、強制終了します。
ということなので、Apacheのエラーログ(xampp\apache\log\error.log)を確認します。すると、
PHP Warning: [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.7. Rebuild it for your PHP version (5.2.8) or download precompiled binaries.\n in Unknown on line 0
衝撃の事実。xampp1.7.0にバンドルされているeAccelerator.dllは(ある意味伝説の)5.2.7 をターゲットにコンパイルされているので、バージョンが合わないというエラーです。
こちらのサイトに5.2.8用にビルドされたdllがダウンロードできるので、こちらをxampp\php\ext\eAccelerator.dllと差し替えます。
c:\xampp\php>php -v PHP 5.2.8 (cli) (built: Dec 8 2008 19:31:23) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies
ちゃんと認識されました。
それから忘れがちなのが、ACLが有効になってるとサーバーの立ち上げなどにAdministrator権限が必要なので、xampp-control.exeなどを実行するときには、右クリック→管理者として実行(A) で起動しましょう。sudoですね。
リソースが許すの出れば、サービスに登録してしまうと楽です(セキュリティーには気をつけて)。
今回なんでVista環境にxamppを入れたかというと、このブログでも使ってるWordPressのコードを読んで見ようと思ったからです。
ソースをちらっと見たことある人ならわかると思うんですが、結構ヒドいコードです。
PHPのカオスさがそのまま如実に表れてるというか。
なので、debugツールを使って楽をしようと導入したわけです。
XDebugかZend Debuggerを使って、少しずつ解析していって、経過を載せたいと思います。