日々のできごとと写真

XAMPPをVistaで使おうとしてハマるワナ

2009-02-04 00:02 | IT | コメントをする »

xampp_vista

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

すると、もれなく

CLIは動作を停止しました

と、エラーが出現します。強制終了の雰囲気ですが、コマンドは実行されます。
うーん、気持ち悪い。
原因は既出で、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が起動せず、強制終了します。

eacceleratorが有効にならない

ということなので、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, エントリー | 185 コメント »

たまにはエンジニアっぽいことを書いてみます。
MTには既に専用のプラグインが出ているようですが、今のところWPは見当たりません。
早々に出てくるような気がしますが、既存のものを利用して作ってみましょう。

WP-OpenIDのインストール

用意するプラグインはWP-OpenID(現在の最新版は2.2.2)

  1. wget http://downloads.wordpress.org/plugin/openid.2.2.2.zip
  2. wp-content/pluginsに unzip openid.2.2.2.zip しますと openidというディレクトリで解凍されます。
  3. プラグインの管理ツールで「WP-OpenID 」がリストに上がってきたら有効にします。
  4. 設定に「WP-OpenID」が追加されるので、開きます。
  5. 今回はコメント欄に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を持っている人なら、面倒な名前やメールアドレスを入れる手間がなくなります。