XAMPPをVistaで使おうとしてハマるワナ
2009-02-04 00:02 | 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を使って、少しずつ解析していって、経過を載せたいと思います。
mixi OpenIDをWordPressで利用する方法
2008-08-22 01:45 | IT, エントリー | 23 コメント »たまにはエンジニアっぽいことを書いてみます。
MTには既に専用のプラグインが出ているようですが、今のところWPは見当たりません。
早々に出てくるような気がしますが、既存のものを利用して作ってみましょう。
WP-OpenIDのインストール
用意するプラグインはWP-OpenID(現在の最新版は2.2.2)
- wget http://downloads.wordpress.org/plugin/openid.2.2.2.zip
- wp-content/pluginsに unzip openid.2.2.2.zip しますと openidというディレクトリで解凍されます。
- プラグインの管理ツールで「WP-OpenID 」がリストに上がってきたら有効にします。
- 設定に「WP-OpenID」が追加されるので、開きます。
- 今回はコメント欄にOpenID機能が欲しいので「Comment Form」にチェックを入れて、更新ボタンを押します。
(curlが入ってなかったりしたら入れてください。PECLで入れるのが楽です。)
基本的に以上で、コメント欄にOpenIDのフォームが現れます。
現れなかった場合は、readmeの通り、
<p><input type="text" name="openid_url" id="openid_url" /> <label for="openid_url"><small>OpenID URL</small></label></p>
を comments.phpに差し込みましょう。
あとはOpenIDの欄に「https://mixi.jp/」と入れてコメントをします。
httpsが通らない
何度やっても認証エラーになる場合は、apacheのerror_logをチェック。
CURL error (60): SSL certificate problem, verify that the CA cert is OK. Details:nerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE: certificate verify failed, referer: http://ms76.jp/
なんてエラーが出ていた場合はcurlが証明書を確認できないでいるので、教えてあげる必要があります。
これについては詳しく書かれていたblogがあるので、そちらをご覧下さい。
さあどうでしょう。成功すれば
Successfully fetched 'https://mixi.jp/': GET response code 200
となります。
カスタマイズ
<input type=”text” name=”openid_url” value=”https://mixi.jp/” /> はあまりもアレなんで、
<input type=”hidden” name=”openid_url” value=”https://mixi.jp/” />には変えましょう。
もちろん、mixi OpenIDの醍醐味である「マイミクだけ許可」のマイミクシィ認証なんかの簡単にできます。
URLを https://id.mixi.jp/{ユーザー ID}/friends にするだけ、ですね。
挙動面のカスタマイズをしたい場合は、素直にwp-comments-post.phpに手を入れます。
例えば、$_POST[‘”url”]や$_POST[“comment_author_openid”]の内容をチェックして、本当にmixiからの認証かどうか、ユーザーは誰なのか、などを確認したりすることが可能です。
mixi OpenID
2008-08-21 01:31 | エントリー, 日記 | 5 コメント »今日衝撃的だったニュースは、株式会社WEB2.0の解散と、mixiがついにOpenIDを実装・リリースしたことでした。
「自立」「分散」「強調」をコンセプトに立ち上がったベンチャーが苦しんでいる一方で、盤石のユーザーをベースにmixi Platformでそれを実現させようとしているmixi。なんだか明暗が垣間みられた気がする1日でした。
日本最大手SNS。もはやインフラ。
アクティブユーザーも多いので、OpenIDに取ってはかなり大きな追い風になりそう。
実際に実験ってことで、このブログ(WordPress)のコメント欄に暫定的に「For mixi ユーザー」というmixiユーザー限定のコメント欄を用意してみました。
mixiにIDを持っている人なら、面倒な名前やメールアドレスを入れる手間がなくなります。