なぜ、 IIS は PHP アプリケーションの実行に不向きとされてきたのか?

震災の影響と、業務が立て込んでいたために久々のブログの投稿となります。 あらためて、今回の震災で被災された皆様には、心よりお見舞い申し上げます。 私の実家も福島にありますが、会津地方ということで大きな被害はありませんでしたが、友人や同僚の実家などでは被害にあったところもあり、なかなか精神的にこたえるものがありました。 原発の問題など、まだまだ厳しい状況が続きますが、復興と再生を信じて頑張っていきましょう!   ということで (←なにが?) 、今回は、長い間囁かれてきたものの、その詳細についてはあまり語られることのなかった IIS と PHP にまつわる噂、「IIS で PHP を動作させるとパフォーマンスが悪い、安定しない」という件について、事実なのか否か、そしてそれはいかなる理由によるものなのか、掘り下げて書いてみたいと思います。   なぜ、 IIS は PHP アプリケーションの実行に不向きとされてきたのか? IIS はリリース当時から PHP を CGI  ( Common Gateway Interface ) として ホストすることができました。 PHP 4 からは PHP ランタイムがマルチスレッド対応となり、IIS 用として ISAPI  (Internet Server Application Programming Interface) モジュールも提供され、IIS 上でも効率よく高速に動作することが可能になりました。 また、XAMP が登場する以前の PHP の入門書をひも解いてみると、その多くで IIS  上で PHP を動作させるための設定が紹介されていることは、その当時に書籍で…


MS SQL Server のデータベースを操作する PHP アプリを自動生成するツール

私のブログのアクセス解析結果を見ると、PHP コードから MS SQL Server に接続したいというニーズがかなりあるようです。 このブログでは以前に、PHP コードから MS SQL Server に接続するコードを紹介させていただきましたが、今回は一歩進んで (?) MS SQL Server のデータベースに対して、CRUD (Create, Read, Update, Delete) 機能を備えた PHP アプリケーションを自動生成してくれるツール SQL CRUD Application Wizard for PHP を紹介させていただきます。 SQL CRUD Application Wizard for PHP http://sqlcrudphpwizard.codeplex.com/ このツールについては、PHP on Windows ガイドライン の 4 章でも紹介しているのですが、ガイドラインでは概要の紹介のみにとどまっているので、この記事では、実際に PHP アプリケーションを出力するまでの手順を紹介させていただきます。   SQL CRUD Application Wizard for PHP による…


SQL Server 2008 R2 Express ( 無償 ) のセットアップ手順

前回のブログ記事の最後で、「次回は、WebSitePanel の日本語化について紹介したいと思います。」 と書きながら、業務上の都合から今回は SQL Server 2008 R2 Express のセットアップ手順を紹介させていただきます。 その前に、SQL Server  をご存じない方々のために、SQL Server  Express について簡単にご紹介しておきましょう。 SQL Server  Express とは マイクロソフトは有償製品として SQL Server というデータベース サーバーをリリースしています。 SQL Server は、強力な高可用性と BI (Business Intelligence) 機能を備えており、金融、証券などの世界中の多くのミッション クリティカルな現場で採用されています。またパフォーマンスにおいても、第三者調査機関が実施するベンチマークテストにて常に上位をキープし続ける実績と実力をもっています。 SQL Server には複数のエディションがあります。そのもっとも標準的なエディションから、データベース サーバーとして必要な機能のみを抽出したものが無償の SQL Server Express になります。 SQL Server Express は、学習や、デスクトップおよび小規模サーバー アプリケーションの構築、ISV による再配布などに使用することができます。 SQL Server Express の種類 現在の最新の SQL Server 2008 R2…

5

PHP ユーザーのための WebMatrix 使用方法

先日 (2010/09/25) 、PHP カンファレンス 2010 にて、『Microsoft ♥ PHP ~ 2nd Stage ~ WebMatrix 登場!』 というタイトルでセッションに登壇させていただきました。 その際に使用したスライドは、奥主さんのブログで公開されていますが、行ったデモの内容は UST の録画公開もないよう なので、実際のデモの手順を今回の記事に記載させていただきます。 その前にまだ “WebMatrix って、…なんだよ?” という方は、奥主さんのブログ内のスライドをご覧ください。 それも面倒だという方のために WebMatrix について簡単に説明すると、WebMatrix というのは、”Web サイトの作成” をお手伝いするための無償ツールです。 現在はまだ β 版ですが、このページから入手することができます。( 現在はまだ英語版しかありませんのであしからず ) WebMatrix Beta http://www.microsoft.com/web/webmatrix/   WebMatrix の機能 WebMatrix には、Web サイトを作成するための様々な機能が、4 つのメニューに割り振られて搭載されています。 (図 : WebMatrix の 4 のメニュー) その 4 つのメニューの機能の内訳は以下のようになっています。 メニュー 機能…

5

PHP から MS SQL Server を使用する方法

ここのところ、オープンソース関連のイベントやコミュニティのイベントに参加させていただくことがあるのですが、その際に参加者の方から “PHP アプリを SQL Server につなぎたいんだけど…” というお話しをいただくことがあります。 もちろん可能です。というか、PHP のランタイムでは以前より Mssql 関数というものが用意されており、PHP 4 までは使用可能ではあったのですが、PHP 5.3 からは Windows 上サポートされない状態となっていました。 SQL Server 2005 からはマイクロソフトからもドライバーを提供させていただいていたのですが、UTF-8 に絡む文字化けやらなにやらで、なかなか使いやすいとは言えないシロモノでした。 しかし、その後リリースされた SQL Server Driver for PHP Version 1.1 で、これらの問題に対応し、さらには最新の Version 2.0 では PDO をサポートしており、これにより他のデータベースサーバーとの相互運用性が格段に向上しています。 (図 : SQL Server Driver for PHP 1.1 と 2.0 の構造比較)   PHP から SQL Server を使用する利点 PHP の…

1

Windows XP と Windows Server 2003 で PHP5 を動かす

IIS 7 ( Windiws Server 2008, Windows Vista ) より FastCGI が機能の一部として搭載され、PHP アプリケーションをより簡単に効率よく実行できるようになりました。 このような背景もあり、FastCGI は、Windows Server 2003 や Windows XP といった Old Windows では動作しないと思われがちですが、そうではありません。 FastCGI には、IIS 6.0 ( Windows Server 2003 ) と IIS 5.1 ( Windows XP ) 用のモジュールが用意されており、これを使用することで、前出の 2 つの Old Windows 上でも PHP アプリケーションを効率よく実行することができます。 Old Windows 上の Old IIS に FastCGI をインストールするには、Web…

1

Apache から IIS へのマイグレーションガイド

IIS 7.0 から FastCGI が標準搭載されたことにより、PHP アプリケーションを使うだけのためにわざわざ Linux + Apache を使用する必要はなくなってきました。 そのせいかどうか知りませんが、”社内にある Linux を Windows Server にするので、Apache から IIS へのマイグレーションの資料がほしい”というお話もちらほらといただくようになりました。 そういった状況を見越して…..、なのかどうかは不明ですが、『Apache to IIS 7.0 – Migration Guide』 なるドキュメントが用意されておりました。 『Apache to IIS 7.0 – Migration Guide』http://download.microsoft.com/download/2/D/8/2D863347-3AFF-48A6-9FCF-EC6554C18DCF/Apache%20to%20IIS%207%200%20Migration%20Guide.doc ちなみに Apache から IIS 6.0 へのマイグレーションについては、 『Internet Information Services (IIS) 6.0 Resource Kit』 の 7 章の “Migrating Apache Web Sites to IIS 6.0″…


IIS7.5 で PHP を使用する方法

先日、同僚が IIS7.5 (Windows 7) への PHP 5.3  のインストールがうまくいかない、とのことでお手伝いしました。 同僚は php.net からダウンロードした msi を使用してインストールを行っていたのですが、なんと、最近の PHP インストーラーには IIS 用の Fast CGI の設定が含まれているのですね。IIS 用のインストーラーで設定可能なのは ISAPI と、ふつーの CGI だけだと思っていたのですが、時代は進んでいるようです。 インストーラーの終了後、念のために IIS の設定を確認すると、正しくハンドラーマッピングの設定がされておりました。 PHP のランタイムのインストール場所は、同僚が変更していたので、デフォルトでどこになるかは不明ですが、セットアップ後に PHP ランタイムがコピーされたフォルダのアクセス権を確認すると、ワーカープロセスが使用するアカウントへのアクセス権は設定されていないので、これは別途手動で行う必要がありそうです。 さて、IIS7.5 では、このアクセス権の設定にコツがあります、というか、注意すべき点があります。 それはアプリケーションプールの動作アカウントです。 IIS7. 5 ではアプリケーションプールの既定の動作アカウントを ApplicationPoolIdentity という特殊なアカウントが使用されます。 この ApplicationPoolIdentity は仮想アカウントであり、アプリケーションが動作する際には、そのアプリケーションプールと同じ名前のアカウントが生成されて、そのアカウントを使用してアプリケーションプールが動作します。 たとえば、アプリケーションプールの名前が DefaultAppPool の場合は、DefaultAppPool という名前のアカウントで動作します。これは、複数のアプリケーションプールのプロセスが、同じ名前のアカウントで動作するセキュリティ的なリスクへの対応を強化するためのものです。   しかし、これらはあくまでも仮想アカウントであるため、ディスクやデータベースへのアクセス権の設定には、まだ(2009 年 10 月現在) 使用することができません。 よって、これらのリソースにアプリケーションプールの動作アカウントでアクセスする必要がある場合には、従来の NetworkService アカウントを使用するなどの工夫が必要になります。 今回の PHP のインストールでは、個別に…

1