OpenID(http://www.openidenabled.com/php-openid/) を利用する場合、リダイレクト処理 が行なわれますが IIS7.0では Header 処理の前に print や echo が実行されると この処理が実行されなくなるため注意が必要です。
以下のようなスクリプトはIIS7.0 では header処理 が実行されません。(IIS7.5 や Apache では実行されます)
<?php
echo “redirect test” ;
$redirect_url = “http://iis.museum-in-cloud.com” ;
header(”Location: “.$redirect_url);
?>
以下、実際に IIS7.0 で PHP OpneID のサンプルプログラムを稼動させるまでの手順を示します。
1. http://www.openidenabled.com/php-openid/ よりライブラリをダウンロード

http://www.openidenabled.com/php-openid/
2. IISマネージャでアプリケーションを追加し、サンプルアプリケーションを実行してみます。
2.1 ダウンロードしたファイルを展開

ファイルを展開
2.2 IISマネージャでアプリケーションを追加

IIS Manager
3. ファイルの修正
3.1 対象ファイル /php-openid-2.1.3examples/consumer/common.php
先頭に以下を追加します。
define('Auth_OpenID_RAND_SOURCE', NULL);
作業ファイルの位置を編集します。
$store_path = "c:/tmp/_php_consumer_dir";
3.2 対象ファイル /php-openid-2.1.3/Auth/Yadis/ParanoidHTTPFetcher.php
http://curl.haxx.se/docs/caextract.html から cacert.pem ファイルをダウンロードし、保存した位置を ParanoidHTTPFetcher.php に記述します。
curl_init の次に cacrt.pem ファイルの指定を追記 (2箇所あるので注意)
また、 Auth_OpenID::log の処理により画面にメッセージが表示されることで redirect処理が影響を受けるため、コメントアウトします。
while ($redir && ($off > 0)) {
$this->reset();
$c = curl_init();
curl_setopt($c, CURLOPT_CAINFO, ‘C:/xxxxx/php-openid-2.1.3/<span style="color: #ff0000;">cacert.pem</span>’);
// Auth_OpenID::log(
// ”Successfully fetched ‘%s’: GET response code %s”,
// $url, $code);
// Auth_OpenID::log(”Got no response code when fetching %s”, $url);
3.3 対象ファイル php.ini
error_reporting の設定を変更して notice の表示を停止します。
(この表示も redirect 処理に影響するため)
error_reporting = E_ALL & ~E_NOTICE
また extension=php_curl.dll と extension=php_openssl.dll を有効にする必要があります。( Web Platform Installer で IIS + PHP をインストールした場合、これらの設定は有効になっています)
4. mixi.jp への redirect を確認
http://localhost/php-openid-2.1.3/examples/consumer/index.php

サンプル開始画面
にて mixi.jp を指定して実行し mixi のサイトへリダイレクトを確認します。

mixi open id
mixi よりリダイレクトにより元のページに戻ります。

認証成功
証明書ファイルの設定が正しくない場合、以下のようなエラーとなります。

php-openid-examples
5. サンプルスクリプトなど参考となるサイト
以上