IIS
FastCGI for IIS7.0のアップデート
件のIIS用FastCGIモジュールがREQUEST_URIなどのサーバー変数をUTF-8でやり取りできない問題の続き。
IIS5.1、IIS6についてはVer1.5 RTW+レジストリ操作で解決しましたが、IIS7.xにいては対応がまだでした。
が、やっとIIS7.0についてアップデートが提供されました。
http://blogs.iis.net/ruslany/archive/2010/03/10/important-update-for-iis-7-0-fastcgi-module.aspx
Windows7やWindowsServer2008R2のIIS7.5用FastCGIのアップデートはまだだがな!
なお、各OSでのFastCGI for IISの状況はこちら。
http://ruslany.net/2010/02/fastcgi-module-differences-across-iis-versions/
Using UTF-8 encoding for server variable valuesがIIS7.5だけNoという。
いやこれ、実質URIにマルチバイトを含めないわけで、非英語圏のアプリケーション的には致命度が半端ないんですが…
Windows Server AppFabric Beta1を試す~その1~
12月と1月は妙に忙しく、まったく検証できなかったので今更ながらWindows Server AppFabricを試していきます。
まずはこちら。英語ですが。
http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx
インストーラはこちらにあります。
が、依存プログラムが多いので、Web Platform Installer 2.0からインストールした方が楽ちんです。
http://www.microsoft.com/web/downloads/platform.aspx
WebPIを起動。
左下のオプションをクリックして、
エンタープライズにチェックをつけます。というかせっかくなので全部にチェックをつけておきます。
すると、WebPIの画面にEnterpriseにタブが出てきます。タブをクリックして、「カスタマイズ」をクリックすると、
AppFabric Beta 1がチェック可能になります。
あとはインストールすれば完了。ただし、注意点が二つ。
- すでにDeveloper版が入っている状態でもSQL Server 2008 Expressをインストールされそうになる
- Windows Firewallが有効になっていないと、Velocityの設定で失敗する
特に後者が致命的なのでご注意ください。アンチウィルスがファイアーウォール機能を備えているからといって、Windowsファイアーウォールを有効にしてると、
Velocity(Microsoft Distributed Cache)用のファイアウォール例外を追加するのに失敗しやがります。
ちなみに前者については、今試したらSQL Server (SQLEXPRESS)のサービスを新規に作りやがりました。ご注意ください。
…と、ここまで書いておいてナンですが、私の環境ではWebPIではDistributedCacheのサービスが動いてないので、手動で再度インストールします。
(というか、会社の環境でもWebPIでうまくいった試しが無い、というかConfigurationWizardが立ち上がらない)
上の方に書いたDownloads/DetailのページからAppFabric Beta1のインストーラをダウンロード(asesetup_amd64_6.1.exe)して、右クリック→管理者として実行をクリック。
WebPIでインストールしてしまっていたので、いったんRemoveします。再起動して、AppFabric Beta1のインストーラを再度実行。
規約を読んで次へ。
DistributedCacheをインストールするよう、チェックをつけて次へ。
DBへのConnectionStringsを指定されるので、前もってMonitoringとPersistence、DistributedCache用のDBを作成しておきましょう。
こんな感じでDistributedCacheの設定をします。こっちもEditボタンで、DBを指定しておきましょう。
後は次へボタンでインストール完了。こちらもWindowsファイアーウォールが有効になってないと、例外追加で失敗するのでご注意。
無事インストールが完了すると、サービス一覧に Microsoft project code named “Velocity” CTP4として追加されます。
続きは次回。
FastCGI 1.5 for IIS6でREQUEST_URIが文字化けする件の解決
こちらのエントリで書いた、FastCGI for IISでのREQUEST_URIの文字化け問題ですが、iis.netのページにこんな情報がありました。
Configure the FastCGI Extension for IIS 6.0
Using UTF-8 encoding for server variables
By default, FastCGI extension uses ASCII encoding when setting server variables that are used by PHP. When requested URL contains non-ASCII characters, then server variables that derive their values from the requested URL string may be set incorrectly. PHP applications that rely on those server variables may not work because of that.
To prevent this the FastCGI extension can be configured to use UTF-8 encoding when setting server variables. To configure FastCGI to use UTF-8 encoding for a particular set of server variables, use the REG_MULTI_SZ registry key FastCGIUtf8ServerVariables and set its value to a list of server variable names, for example:
reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
The above example will configure FastCGI extension to use UTF-8 encoding when setting REQUEST_URI and PATH_INFO server variables.
After setting the registry key restart the IIS by using the iisreset command.
Warning: using UTF-8 encoding for server variables may affect how PHP core and PHP applications work. Make sure to verify that applications work as expected after the registry key has been changed.
1月にやっとリリースされたRTW版で追加されたオプションのようです。要は、デフォ設定だとREQUEST_URIやPATH_INFOをUTF-8でやりとり出来ないと。
というわけなので、コマンドラインで上記レジストリエントリへの追加をして、IISのサービスを再起動して完了。
Wordpressのclasses.phpを修正していたのを戻して、エントリ単品の記事へ正常にアクセス出来る事が確認できました。
しかしなんでデフォでこんな仕様なんだろう…







