PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Apache 1.3.x (Microsoft Windows 用)> <ActiveScript
Last updated: Fri, 18 Jul 2008

view this page in

Microsoft IIS / PWS

この章では、IIS (Microsoft Internet Information Server) に関する 注意やヒントを取り上げます。

警告

CGI モードで公開したサーバは、いくつかの脆弱性の標的となる可能性があります。 これらの攻撃からサーバを守る方法については、 CGI セキュリティ のセクションを参照してください。

IIS あるいは PWS で PHP を使用する際に、一般的に考慮すべき点

  • まず最初に、 マニュアルインストール をお読みください。 ここには Windows 上に PHP をインストールするための重要な情報が含まれているので、 決して読み飛ばしてはいけません。
  • CGI を利用する場合は、php.ini 内で cgi.force_redirect PHP ディレクティブを 0 に設定する必要があります。 cgi.force_redirect に関する FAQ に重要な情報がありますので お読みください。また、CGI を利用する場合は cgi.redirect_status_env ディレクティブを設定することもあるかもしれません。これらの ディレクティブを使用する際には、php.ini 内でその項目が コメントアウトされていないことを確認してください。
  • PHP 4 では CGI は php.exe という名前ですが、 PHP 5 ではその名前は php-cgi.exe となります。 PHP 5 では php.exe は CLI であり、CGI ではありません。
  • Windows の環境変数 PATH を変更し、PHP の ディレクトリを含めるようにしてください。こうすることによって PHP の DLL ファイルや PHP 実行ファイルを PHP ディレクトリの中に置いておくことが可能となり、Windows のシステムディレクトリを汚すことが避けられます。 詳細な情報は、FAQ の PATH を設定する方法 を参照ください。
  • IIS ユーザ (通常は IUSR_MACHINENAME) に対しては、 php.ini、ドキュメントルートおよびセッションの一時ディレクトリなどの さまざまなファイルやディレクトリへの読み込み権限を与えておくことが 必要です。
  • php.ini 内のディレクティブ extension_dir および doc_root は、必ず適切に設定するようにしましょう。 これらのディレクティブの内容は、PHP がインストールされている システムに依存します。PHP 4 では extension_dir は extensions となりますが、PHP 5 では ext です。そのため PHP 5 の extensions_dir の値は例えば "c:\php\ext" のようになり、 IIS の doc_root の値は例えば "c:\Inetpub\wwwroot" のようになります。
  • php_mysql.dllphp_curl.dll のような PHP 拡張モジュールの DLL ファイルは、zip パッケージ版の PHP 配布物に含まれています (インストーラ版には含まれません)。 PHP 5 では多くの拡張モジュールが PECL に含まれるようになり、 "Collection of PECL modules" パッケージとしてダウンロード できるようになりました。この中には php_zip.dllphp_ssh2.dll などが含まれます。 » PHP はここからダウンロードできます
  • 実行ファイルを定義する際に「ファイルの存在を確認する」をチェックします。 少しパフォーマンス は落ちますが、IIS (もしくは PWS) が PHP を起動する前に、 そのスクリプトが存在し認証上の問題がないかをチェックするようになります。 PHP は CGI エラー時に空白の画面しか出力しませんが、こうすることで、 より解りやすい 404 エラーメッセージを出力させるようにすることができます。
  • 配布されている PHP の実行ファイルは 32bit アプリケーションです。 64bit 版の Windows を使用している場合は、自分でバイナリを再ビルドするか、 あるいは 32bit の拡張モジュールを実行できるように IIS を設定します。 この設定は、通常は IIS の管理スクリプトで Cscript.exe adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 のようにします。

Windows NT/200x/XP 上の IIS 4 以降

PHP は、CGI バイナリあるいは ISAPI モジュールのいずれかの形式で インストールされていることでしょう。いずれにしても、まず 「マイクロソフトマネージメントコンソール」 (Windows NT 4.0 オプションパック環境では「インターネット サービスマネージャ」、Windows 2000/XP では コントロールパネル=>管理ツールにあります) を起動する必要があります。 次に、Web サーバノード (たいていは「既定の Web サイト」と表示されています) 上で右クリックし、「プロパティ」を選択します。

CGI バイナリを使う場合は、次のようにしてください。

  • 「ホームディレクトリ」あるいは「仮想ディレクトリ」「ディレクトリ」タブで 以下のようにします。
  • 実行アクセス許可を「スクリプトのみ」に変更します。
  • 「構成」ボタンをクリックし、「マッピング」タブを選択します。 「追加」をクリックし、実行可能ファイルに適切な CGI ファイルを指定します。 たとえば PHP 5 では C:\php\php-cgi.exe となります。 「拡張子」に .php を指定し、「動詞」は空白のまま、 「スクリプトエンジン」チェックボックスをチェックしてください。 そして、「OK」ボタンを何度かクリックしてください。
  • 適切なセキュリティを設定してください (これは インターネットサービスマネージャで行います)。もし NT サーバで NTFS ファイルシステムを使用しているなら、 php.exe / php-cgi.exe があるディレクトリへの実行権限を I_USR_ に追加してください。

ISAPI モジュールを使う場合、次のようにしてください。

  • PHP を使用した HTTP 認証を実行しない場合は、この手順を飛ばしてください。 「ISAPI フィルタ」タブで新規フィルタを追加します。「フィルタ名」として PHP を使用し、「実行ファイル」には php4isapi.dll / php5isapi.dll へのパスを入力してください。
  • 「ホームディレクトリ」あるいは「仮想ディレクトリ」「ディレクトリ」タブで 以下のようにします。
  • 実行アクセス許可を「スクリプトのみ」に変更します。
  • 「構成」ボタンをクリックし、「マッピング」タブを選択します。 「追加」をクリックし、実行可能ファイルに適切な ISAPI DLL を指定します。 たとえば PHP 5 では C:\php\php5isapi.dll となります。 「拡張子」に .php を指定し、「動詞」は空白のまま、 「スクリプトエンジン」チェックボックスをチェックしてください。 そして、「OK」ボタンを何度かクリックしてください。
  • IIS を停止させます (NET STOP iisadmin)。
  • IIS を再度起動します (NET START w3svc)。

IIS 6 (2003 Server) の場合は IIS マネージャを開き、「Web サービス拡張」に 移動し、「新しい Web サービス拡張を追加」を選択し、たとえば「PHP」などと 拡張名を入力し、「追加」ボタンを押して ISAPI ファイル (php4isapi.dll または php5isapi.dll) あるいは CGI (php.exe または php-cgi.exe) を選択し、「拡張の状態を許可済みに設定する」をチェックして「OK」ボタンを クリックします。

デフォルトのページとして index.php を使用するには 以下のようにします。 (訳注:「既定の Web サイト」のプロパティダイアログで) 「ドキュメント」タブを選択し、「追加」を選択します。そこで index.php と入力し、「OK」をクリックします。 「上に移動」や「下に移動」を使用して順番を調整します。 これは Apache での DirectoryIndex の設定と同じです。

上記の手順を PHP スクリプトに関連づけたい拡張子ごとに繰り返してください。 一般的な拡張子は .php ですが、 古いアプリケーションでは .php3 が必要な場合があります。

CPU 使用率が 100% となる場合は、IIS の設定「ISAPI アプリケーションをキャッシュ」をオフにしてください。

Windows 上の PWS 4

PWS 4 は ISAPI をサポートしていません。PHP CGI のみが使用可能です。

  • 配布ファイル内の pws-php4cgi.reg / pws-php5cgi.reg ファイル (PHP 4 の場合は SAPI フォルダ、 PHP 5 の場合メインフォルダを参照)を編集し、php.exe / php-cgi.exe の設置場所を反映させます。 バックスラッシュはエスケープする必要があります。例、 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".php"="C:\\php\\php.exe" (PHP 5 の場合は C:\\php\\php-cgi.exe とします)。 編集を終えたらダブルクリックして、レジストリファイルをシステムに反映させます。
  • PWS マネージャで、PHP を実行させたいフォルダで右クリックし、 プロパティを選択します。「実行」チェックボックスをチェックし、確認を押します。

Windows 上の PWS/IIS 3

PWS/IIS 3 サーバを設定するには、配布ファイルに含まれる REG ファイル (SAPI フォルダの pws-php4cgi.reg が PHP 4 用、 メインフォルダの pws-php5cgi.reg が PHP 5 用) を使用することを推奨します。 このファイルを編集し、拡張子および PHP インストールディレクトリを自分用の設定に 調整することが可能です。さもなくば、以下の手順により、手動でこの設定を行うことも可能です。

警告

以下の手順では Windows レジストリに対して直接変更を加えます。 ひとつでも間違えると、システムが不安定になる可能性があります。 レジストリのバックアップをとることをを強く推奨します。 PHP 開発チームは、レジストリが損傷した場合の責任を負いません。

  • Regedit を起動します。
  • HKEY_LOCAL_MACHINE /System /CurrentControlSet /Services /W3Svc /Parameters /ScriptMap へ移動します。
  • 「編集」メニューから、新規 -> 文字列値 を選択します。
  • PHP スクリプトに使用したい拡張子を入力します。 たとえば .php となります。
  • この新しく作成した文字列値をダブルクリックし、入力欄に php.exe までのパスを入力します。たとえば PHP 4 では C:\php\php.exe "%s" %s、 PHP 5 では C:\php\php-cgi.exe "%s" %s となります。
  • PHP スクリプトに関連付けたいすべての拡張子に対して、 上記の手順を繰り返します。

以下の手順は、Web サーバのインストールに影響を与えるものではなく、 PHP スクリプトをコマンドライン (例:「ファイル名を指定して実行」で C:\myscripts\test.php を入力するなど) やダブルクリックで実行させたい場合にのみ行ってください。 ダブルクリックした際にテキストエディタに読み込まれるままとしたいのなら、 以下の手順はスキップしてください。

  • HKEY_CLASSES_ROOT へ移動します。
  • 編集メニューから、新規 -> キー を選択します。
  • キーを先に入力した拡張子と同じ名前にします。例、.php
  • 作成した新しいキーを選択した状態にし、右の欄で 「(既定)」 をダブルクリックして phpfile と入力します。
  • 先に登録したすべての拡張子に対して繰り返します。
  • HKEY_CLASSES_ROOT で、再度 新規->キー とし、phpfile という名前にします。
  • 新しいキー phpfile を選択した状態にし、 右の欄で 「(既定)」 をダブルクリックして PHP Script と入力します。
  • phpfile を右クリックし、新規->キー を選択し、新しくできたキーを Shell という名前にします。
  • Shell を右クリックし、新規->キー を選択し、新しくできたキーを open という名前にします。
  • open を右クリックし、新規->キー を選択し、新しくできたキーを command という名前にします。
  • 新しくできた command を選択した状態にし、 右の欄で 「(既定)」 をダブルクリックして php.exe への パスを入力します。例、c:\php\php.exe -q %1%1 を忘れずに入力すること)。
  • Regedit を終了します。
  • Windows 上で PWS を使用している場合、レジストリを再ロードするために 再起動します。

ここまでの作業で、PWSおよび IIS 3用のシステムインストールは完了しました。 IIS 3 用の良くできた » 設定ツール が Steven Genusa により 配布されており、これを使用してスクリプトマッピングを設定することができます。



Apache 1.3.x (Microsoft Windows 用)> <ActiveScript
Last updated: Fri, 18 Jul 2008
 
add a note add a note User Contributed Notes
Microsoft IIS / PWS
frubi at frubi dot net
26-Mar-2008 12:51
Under Win2003, you don't need to restart the services, if you only add PHP to a new website with its own application pool.
buczynski_r at hotmail dot com
21-Feb-2008 03:51
Special thanks to tstirrat AT optusnet DOT com DT au.

Changing the identity setting for the application pool did the trick!
bbxmail1 at job1data dot com
13-Feb-2008 06:04
i think the install steps are generally covered in the installation guideliness on this website, but this step by step guide and its explanations make the install on SBS2003 much easier to follow and implement. I spent about 3 hours searching threads and forums and not getting it all until i followed the steps at this link.
http://www.peterguy.com/php/install_IIS6.html#IISConfigure
shanef dot jordan at gmail dot com
31-Oct-2007 02:24
Make sure in IIS that when you set the permissions on C:\PHP that it inherits to the folders/files within that directory.  I was doing a reinstall on a 2003/IIS 6 and whoever did the previous install took off inherit permissions.  Fought with that for several hours!!
paul_lynch67 at hotmail dot com
09-Sep-2007 09:40
Hi,

I've written a manual installation guide for PHP 5.x on Windows Server 2003 and IIS 6.0 which you can find here :

http://www.iisadmin.co.uk/?p=4

This is the same article which used to be hosted on the IIS Resources web site. I hope some of you find it useful.

Regards,

Paul Lynch [IIS MVP]
stevegath at gmail dot com
27-Jul-2007 06:38
After a few hours of trying everything under the sun to get PHP 5.2.3 to work on Windows Small Business Server 2003 with IIS6 with ISAPI starting from the msi install of from php.net.  I found that the install correctly used the path C:\PROGRA~1\PHP\PHP5IS~1.DLL in adding the Mapping for .php but for the Web Service Extension it used C:\Program Files\PHP\php5isapi.dll.  When I changed this to C:\PROGRA~1\PHP\PHP5IS~1.DLL.  It worked right away.  Before this change I would get a 404 error when accessing php pages.  Moral of the story is avoid spaces in all paths.
jos at juffermans dot net
09-May-2007 02:48
Has anybody succeeded in running PHP4 and PHP5 simultaneously using ISAPI? It's possible as CGI since they'll both pick up their php.ini from where the php.exe (or php-cgi.exe) is. But as ISAPI they'll both read the same php.ini file which points both versions to the extension folder of 1 version (eg both PHP4 and PHP5 will use the PHP5 extensions) and thus fail...

Please don't ask my WHY I want both versions, I simply have to. Don't mean to start a discussion here but would like to run both PHP4 and PHP5 as ISAPI module.
carsten at enggaardblom dot dk
10-Apr-2007 06:11
Installing PHP 5.2.1 on a Windows 2K3 Server with SP1 and IIS 6.0

- was about to give me the head ache of the year! It is NOT - repeat - NOT possible to use the CGI on a server but ISAPI works perfectly. The documentation mentions both - but cgi/fastcgi is definetely a no go.

Using the PHP installer I used the IIS option, corrected the recommended php.ini file and added the extensions I wanted.

And at this point - too - you have to restart the server to make it work, a restart of only the IIS service is not sufficient.

So mark my words, use ISAPI and don't get any errors!
16-Mar-2007 04:06
This one threw me for a loop; you CAN NOT put the PHP folder in Program Files if you're installing on IIS!  I guess the space in "Program Files" throws it off, I was getting a "You must enter a valid file path" error when trying to add the PHP mapping manually.
peopls at gmail dot com
06-Oct-2006 05:20
I had a big problem with this on my server, as I was not using IUSR I was using Network Service.
Even more difficult was the fact that it was the DC on a domain which meant I got told that  it "is not from a domain listed in the Select Location dialog box, and is therefore not valid.".
The way I got around this was with the following command.
C:\Documents and Settings\Administrator>cacls C:\php /G "NT AUTHORITY\NETWORK SERVICE":F /E /T

Please note that this gives the user NETWORK SERVICE full access to the C:\php directory, but it did solve my problem!
Rex Hunt
07-Sep-2006 03:30
Found this PHP installer for IIS which uses fastcgi and apc;

http://www.iis-aid.com/iis_aid_php_installer

You get to configure your fastcgi and apc settings during installation, and it is meant to work with IIS 5.x and 6. It even setup the web server extension in IIS 6, and seems to be working ok for me so far on a dev box. Only drawbacks are it is only available with PHP 4.4.1 using fastcgi (no isapi yet).
sschefer at scheferonline dot net
28-May-2006 08:56
I have sucessfully installed PHP 4 and 5 on every windows server version since 2000 (not NT4) and XP. It is simple but there are a couple of pre-requisites that I've never seen mentioned.

1. Most of the problems folks are experiencing on the server side are .NET 2.0 induced. If you must run .NET 2.0 then you need dll's that were compiled with Visual Studio 8. The big push behind VS.8 and the Express editions is to get you off of PHP and onto C#. Keep that in mind when you develop apps.

2. You can run .NET 2.0 and Visual studio on XP with PHP and IIS if you install Visual Studio first. Visual studio installs its own dedicated version of IIS that works with .NET 2.0 but will not run php. After VS is installed go ahead and install the included XP version of IIS and configure your virtual sites with PHP. If you do it the other way around, VS will incorporate itself into the xp IIS and your PHP will probably not run.

3. Put the PHP ini file where windows wants it, in the (system root) "c:\windows" dir. If you do that,  and you are using only the ISAPI dll's, you just need to change the ini file to point to the ext directory correctly and it will run fine. I usually do all the pathing recommendations and set phprc=(php directory) too. I also leave a copy of the current ini file in the php directory root just incase php forgets to consult with the OS before looking for something.

Most of the problems with permissions are comming from .NET 2.0. You should never have to weaken security to get PHP to run.

4. Slightly out of scope but important nonetheless. If you do not run .NET 2.0, the ordering of your extensions (ie..mysql.dll, etc.) becomes far less important. You may see a hang occasionally but its rare.

Hope this helps someone.
Steve
legolas558_AT_users dot sourceforge.net
12-May-2006 06:07
How to solve the nasty "permission denied" under IIS (Windows xp)

From http://www.geocities.com/legolas.1558/php_iis_permission_denied.htm

   1. Did you disable Simple File Sharing? From any folder click Tools -> Folder Options -> View (tab)-> (scroll the list and find "Simple File Sharing (reccomended)") UNTICK IT
   2. Locate your localhost root directory, usually C:\InetPub\wwwroot\
   3. Open the Properties of the whole directory, in our case wwwroot
   4. Click the Protection tab(where to manage user rights)
   5. Click Add and then click Advanced (button in the bottom-left part of the window)
   6. Click Find (the only enabled button between Columns and Stop)
   7. Pick the user that starts with IUSR_ (which is the IIS default user) from the list Windows has kindly found for you
   8. push OK twice
   9. the new added IUSR_ will be selected, from the Authorizations list check Edit (to allow file creation/deletion) and Write (to allow file modify)
  10. click OK one more time to get back to your native folder
EvilPuppetMaster
24-Mar-2006 04:39
After having recently gone through a long process of trial and error installing both php4 and php5 on a single machine under IIS. I eventually did get it working so I thought I'd share what I learnt.

Basically, as far as I can tell there is no way to get both versions working using the ISAPI dlls unfortunately. You can however get them working using one as ISAPI and the other as CGI. And probably both as CGI too, although I didn't try that.

You'll need to know how to do a manual install of PHP anyway, see the instructions for how to do that. Make sure you follow the steps about your PATH env variable and Allowing extensions on IIS 6. Keep your php.inis in the relevant php directory and make sure they are not in your windows or system32 folders. And all that other hoopla.

The crucial part is your php.ini files. The problem being that both versions will look at your PHPRC setting and get the ini file path from that. So you'll end up with both versions running off the same INI which is no good. The way around this is to use the CGI for one version and ISAPI for the other.

The ISAPI dll never seems to look in it's own directory for the ini file, but the CGI exe does. You can use that quirk to your advantage by naming the INI file for the ISAPI version 'php-isapi.ini' and setting the PHPRC environment variable to that path. Then for the CGI version keep the php.ini in the same directory as php.exe.

Then set your virtual server to use either the ISAPI module for one version, or the CGI module for the other version, and it should work. Test using phpinfo() to ensure each version is getting it's ini file from the correct place.

Basically it seems that the ISAPI module will look in the path set in PHPRC first, and choose the php-isapi.ini file. The CGI module will look in PHPRC first too, but it upon seeing no php.ini it will then move on to search it's own directory, where it finds php.ini.
Martu
24-Mar-2006 02:07
I have fixed the 404 with this message found at google groups:

-----------------------------------------------------------
I could not get PHP pages to display in IIS 6 with Windows 2003, using the
default install of the stable binaries from php.net.

Here is the solution I found.

The default install registers the .php extension as belonging to
c:\php\php.exe.  This is correct, but it's faster to use the ISAPI
extension.

To do this,
1. Open the IIS Management console
2. Expand the server, right click on "Web Sites" and click Properties
3. Open the "ISAPI Filters" foldertab
4. Click Add
5. Enter PHP in the Filter Name box.
6. Click Browse and then Browse to your php4isapi.dll.
6. Click ok -> Apply -> ok

... Once this is completed, your PHP scripts still won't run.  The problem
is that you have to define and enable PHP as a "Web Service Extension".

To do this,
1. Open the IIS Management console
2. Expand the server, and expand the "Web Services Extensions"
3. Click "Add a new Web services Extension"
4. Enter PHP in the Extension Name box.
5. In the required files box, Browse to your php directory and add
php4isapi.dll.
6. Click ok -> Apply -> ok

Last but not least, You may or may not need to do the following,
-Set the extensions path in the php.ini file if you are going to use any
extensions , i.e.  php_mssql.dll
-I had to copy the php4isapi.dll from c:\php\isapi to c:\php, YMMV
-Give the webserver user (IUSR_MACHINENAME in most cases) read and execute
access to php4isapi.dll and php4ts.dll

Good Luck,
Ejay Hire
EjayH...@hotmail.com
----------------------------------------------------------
paul_noeldner at hotmail dot com
04-Oct-2005 04:58
PROBLEM
    PHP $DOCUMENT_ROOT was not set in IIS. 
ANALYSIS
    A Google search turned up a suggestion re using ISAPI instead of CGI. 
SOLUTION
I did the fix per these suggested steps from Google search:
1 Downloaded PHP5 zip
2 Added ISAPI filter PHP5ISAPI.DLL named PHP
3 Changed document type .php to point at the PHP5ISAPI.DLL file instead of PHP.EXE.
RESULT
This worked - the php pages started picking up $DOCUMENT_ROOT as expected.
General suggestion: Don't waste time with CGI, use ISAPI.
Jamez
23-Sep-2005 02:29
PHP 5, IIS 5, Win XP:

One thing to note: if you run phpinfo() and the 'Configuration File (php.ini) Path' points to a directory and not the actual file (ie. C:\\windows instead of C:\\windows\\php.ini) this means that it is not using your php.ini file, it is using default settings.

After spending hours searching forums the only thing that got it to work for me was to create a new environment system variable called 'PHPRC' and set it to the path where your php.ini is located (ie C:\\PHP) - simply adding C:\\PHP to the system path variable didn't do it. You have to reboot after this change of course. I'm not sure why this isn't more documented as from my searching there are quite a few people who experience this problem... hope this helps!
webwhammy.com
16-Sep-2005 01:53
After installing PHP and running an http://localhost/test.php file in my browser, I encountered a COM Surrogate error. After some testing, I found that it was a result of un-checking the Cache ISAPI applications checkbox. Consequently, make sure that the Cache ISAPI applications checkbox has a check in it. To get to the checkbox go to:

Control Panel>Administrative Tools>Internet Information Services

When you are at the IIS window in the left navigational panel go to:

Local Computer>Web Sites>Default Web Site

Right-click on your default web site and select Properties. A Properties window appears. Select the Home Directory tab. Click on the Configuration... button. A Configuration window appears. Below the Mappings tab is the Cache ISAPI applications checkbox.

Again, make sure that the Cache ISAPI applications checkbox has a check in it. I hope this helps anybody else with a similar problem.
Mac Rinehart
08-Sep-2005 06:14
"Click on the 'Configuration' button, and choose the Application Mappings tab. Click Add and set the Executable path to the appropriate CGI file. An example PHP 5 value is: C:\php\php-cgi.exe Supply .php as the extension. Leave 'Method exclusions' blank, and check the 'Script engine' checkbox. Now, click OK a few times."

When installing PHP 5 on IIS 6.0 and Windows 2003 I encountered problems with this instruction. I  believe the root cause is that IIS requires the "scripts and executables" execute permission to be selected if the script engine has a .exe extension.

However, there may have been additional problems. Even when selecting the "scripts and executables" execute permission I continually received HTTP Header errors. The resolution was to follow the instructions for use of php5isapi.dll. The .dll extension can be run with the "scripts only" execute permission. Also remember IIS 6.0 requires that you identify Web Extensions and Allow execution of those extensions.
peter at peterguy dot com
31-Mar-2005 08:43
Installing PHP 5 on Windows Server 2003/IIS6

It has come to my attention that the link to my PHP installation guide in my posting of 07-Feb-2005 11:49 is a Bad Link.
We don't like Bad Links.

Here's the correct one:

http://www.peterguy.com/php/install_IIS6.html

Enjoy!

-Peter
Marat
16-Mar-2005 10:50
The correct required NTFS ACL's are:

- for the folder holding your PHP files:
   [Read] IUSR_servername
   [Read] IWAM_servername

-for the folder holding the PHP executables:
   [Read] IUSR_servername
Person who wants ISAPI version installer
25-Feb-2005 10:59
Supplementation to the previous hint

The environment is Windows 2003 Server/IIS 6/PHP 5.

About IIS 6 of Windows XP.

 There is no 'IISEXT.VBS'.
 It seems not to have to add it to the Web enhancing
 (It is not an accurate intelligence ).
 Moreover, when the method argument of iis6
 isapimap add is omitted, it becomes an error.
 Specify it following and specifying it.

   iis6isapimap add .PHP C:\PHP\php5isapi.dll GET,POST,HEAD

Good Luck !
Person who wants ISAPI version installer
24-Feb-2005 10:34
Hint registered to IIS 6 as ISAPI without using GUI.
(It is a machine translation from Japanese to English. )

[Method of addition to Web enhancing]

'IISEXT.VBS' is attached to IIS 6.

  <addition example>

    iisext /AddFile C:\PHP\php5isapi.dll 1 PHP 1 "PHP: Hypertext Preprocessor"

  <deletion example>

    iisext /RmFile  C:\PHP\php5isapi.dll

[Method of adding extension to Application Mappings]

To our regret, there is no good method in the standard. :-(
The source code of C# program that is registered and deleted is presented in the mapping.
(It is hoped that someone writes VBScript or the JScript version)

  <addition example>

    iis6isapimap add .PHP C:\PHP\php5isapi.dll

 < deletion example>

    iis6isapimap delete .PHP

C# source code
(Add 'System.DirectoryServices' to the reference)
------------------------------------------------------------
using System;
using System.Collections;
using System.DirectoryServices;

namespace IIS6ISAPIMAP

{
    class StartClass
    {
        public static void print_man()
        {
            Console.WriteLine("IIS6ISAPIMAP [view|add|delete] <.ext> <ISAPI DLL PATH> (METHOD LIST)");
        }

        [STAThread]
        static void Main(string[] args)
        {
            if ( args.GetLength(0) < 1 )
            {
                print_man();
                return;
            }

            System.DirectoryServices.DirectoryEntry dent
                = new DirectoryEntry("IIS://localhost/W3SVC/1/root"); 
            ArrayList orglist
                = new ArrayList( dent.Properties["ScriptMaps"] )  ;

            if ( args[0].ToLower() == "view" )
            {
                foreach(string s in orglist)
                {
                    Console.WriteLine(s);
                }
            }
            else if ( args[0].ToLower() == "add" )
            {
                if ( args.GetLength(0) < 3 )
                {
                    print_man();
                }
                else
                {
                    ArrayList newlist = new ArrayList();
                    string ext = args[1];
                    string path = args[2];
                    string methods = args.GetLength(0) < 4 ? "" : args[3];
                    string newmap = ext + "," + path + ",5," + methods;

                    foreach(string s in orglist)
                    {
                        string [] tokn = s.Split(',');
                        if ( tokn[0].ToLower()  != ext.ToLower() )
                        {
                            newlist.Add( s );
                        }
                    }
                    newlist.Add( newmap );

                    dent.Properties["ScriptMaps"].Value = newlist.ToArray();
                    dent.CommitChanges();
                }
            }
            else if ( args[0].ToLower() == "delete" )
            {
                if ( args.GetLength(0) < 2 )
                {
                    print_man();
                }
                else
                {
                    ArrayList newlist = new ArrayList();
                    string ext = args[1];

                    foreach(string s in orglist)
                    {
                        string [] tokn = s.Split(',');
                        if ( tokn[0].ToLower()  != ext.ToLower() )
                        {
                            newlist.Add( s );
                        }
                    }

                    dent.Properties["ScriptMaps"].Value = newlist.ToArray();
                    dent.CommitChanges();
                }
            }
            else
            {
                print_man();
            }

            dent.Dispose();
        }
    }
}
php at at dougdossett dot com
07-Jan-2005 08:05
I had problems upgrading to 5.0.3 isapi on my IIS 6/Windows 2003 server.  Most of the instructions I found said to give the IUSR account access to various files/folders.  In my case I needed to give access to "Network Service" (not to be confused with just "Network"). 

1. In IIS Admin, go to Application Pools
2. Right click on the pool your site is running under and click properties. 
3. Go to the Identity tab and see what user is selected. 
4. Give that user permissions to your php files/directory.

Don't know if this will help anyone else, but thought I'd offer in case.
megawhizzz at netscape dot com
12-Oct-2004 01:19
Path references (e.g. for browscap.ini) in php.ini MUST be enclosed with double-quotes (") instead of single-quotes(') for PHP to load correctly under IIS
paul at heisholt dot net
30-Aug-2004 10:43
There's a bug in IIS 5.1 which may prevent you from adding an Application Extension Mapping. If the OK button remains disabled after you've entered the Executable and the Extension, try this workaround provided by Microsoft:

1. Right-click the individual Web site or the Web Sites folder, and then click Properties.
2. On the Home Directory tab, click Configuration.
3. Under Application Configuration, click Add, and then click the Mappings tab.
4. With the Add/Edit Application Extension Mapping dialog box open, click Browse to select the .exe file or the .dll file from the local path on the Web server.

Note:
You must type the path to a valid file in the Executable text box or the OK button remains unavailable. The easiest way to make sure that you enter a valid path is to select the file by using the Browse button.

5. After the path appears in the Executable text box, click in the Executable text box to initialize the path.

6. Click in the Extension space, and then type the file name extension.

Note:
- You must enter the period (.) in front of the extension in the Extension text box, or the OK button remains unavailable.

7. When the OK button becomes active, click OK to continue.

Source: http://support.microsoft.com/?id=317948

-paul-
webmaster at avalon dot de
13-Aug-2004 04:55
If you use IIS6 you have to add a new Webextension for PHP to work, otherwise you will get a "404"-Page if you try to point your browser to a "*.php" file.
In order to do this you have to open the IIS-management console and open the "local computer".
Under "webextensions" you will find allready a list with different extensions all being blocked by default.
To get PHP to work you have to manually add a new webextension. I only have a german version of IIS in front of me so forgive me if i translate the buttons wrongly.
Click on "New webextension". Enter any name you like for your new extension. Click on "Add..." and then on "Search...". If you would like to add the DLL just browse to your PHP-directory and you will find the php5ts.dll. If you search for the php-cgi.exe you have to change the filetype at the bottom to "CGI-Exe-Files". Only after changing the filetype you can see the php-cgi.exe file and choose it for the extension.
If you check the checkbox at the bottom of the "New extension" Window it will allow the newly added extension to be executed. Certainly you can change the status any time you want by clicking on "Allow".
Only after that procedure you will be able to get in touch with PHP-files.

sincerely
Juergen Sommer
venimus at mail dot com
07-Jun-2004 04:57
Under IIS6 (and earlier)
After all the installation, do not forget to add "index.php" as default page, under the Documents tab in the Web Site's Properties.
1. Right-click Web Sites, choose Properties
2. Click Documents tab
3. Click Add...
4. Type index.php, click Ok
5. Choose "index.php" from the list and move it to the top using Move Up button.
6. Make sure "Enable default content page" is checked.

Ofcourse you can add other pages as default.

For those that do not know what is this for: If you do not provide full URL and you have several pages in the directory which are in this list, the server will return the topmost of them. In case you wish to open other page of them, you have to provide its full URL. Putting "index.php" on top will make sure no other pages will be returned as default.
jorrit at gameparty dot net
02-Jun-2004 01:33
If you experience extreme high loading times, please have a look at this http://bugs.php.net/bug.php?id=28524
tstirrat AT optusnet DOT com DT au
21-Apr-2004 05:14
I am running Active Directory & IIS6.0

I found that after looking through the tutorial below i was still unable to get into my site (authentication popup, 401.3 error). I set my permissions for read & execute for IUSR_(server) and IIS_WPG for both my document root and the php directory.. no luck.

However, here's how i solved the problem. (I believe this solution is relevant to fixing the active directory issue)

1. You want to give the IUSR_* and IIS_WPG read & execute permission to the PHP DIRECTORY ONLY. (I managed to remove the credentials from my document root and it still works.

2. Open IIS Manager and go to Application Pools, then to the pool which is relevant to your site (in my case DefaultAppPool).. on this item, right click and choose properties.

3. Now navigate to the identity tab.

4. My Worker process was set to Predefined: Network Service. I changed this to Configurable: IWAM_(server name) (which if you noticed is in the user group 'IIS_WPG')

Note: i also changed the passwords for my IUSR_* and IWAM_* accounts to be sure they werent set to something easy by default. Its probably a good idea to do this too.

Hope this solves someones frustration.
giunta dot gaetano at sea-aeroportimilano dot it
12-Feb-2004 02:32
If some extensions (such as OCI or Turck mmcache in FastCGI mode) have trouble functioning with PHP+IIS, make sure that "Allow IIS to Control Password" is unchecked in the preferences panel for anonymous user access.

For more detail on the issue, read articles 216828 and 218756 in the MS Knoweledge Base.
Aaron Blew
11-Feb-2004 09:24
Under IIS 6, don't forget that you have to add all the PHP modules you'd like to run to the PHP Web Service Extension part under the IIS management console.
webmaster at riachao dot com
12-Aug-2003 03:49
In the installation with IIS 6.0, after you add the isapi extension, you need to allow the extension in the Web Services Extensions, or you 'll get a 404 error.
nbrookins at cbwstores dot com
11-Apr-2003 06:16
On Windows Server 2003 (formerly .net server) with IIS 6 (final RTM - build 3790)

 I got PHP working by using one of the tips above (thanks!). 

I noted however, that I did not need to 'allow unknown Isapi applications' , and I was able to keep the configuration at 'Scripts Only' instead of 'Scripts and Executables'  - both settings are potentially more secure this way.

The only configuration that is different from how I normally configure PHP on IIS 5 is the addition of PHP as a Web Service Extension.
jdogg00 at msn dot com
03-Nov-2002 05:50
Here's a quick fyi, to get PHP installed on .Net Server w/ IIS 6 you have to use the IIS manager to enable support for different web service extentions. CGI ,ASP, ISAPI are all prohibited by default. In IIS manager click on the Web Service Extentions Folder there's options to add a new extention , prohibit all extentions etc. I chose add new extention ,in the dialog box I named it PHP , click add , in the next dialog browse to path of 'php4isapi.dll' hit ok then mark checkbox "Set extention status Allowed"  hit ok and all is good. This was done after I followed the install.txt for IIS 4 or newer .
greg at wfrmls dot com
23-Jan-2001 06:12
When using WindowsNT 4.0 and IIS, the WWW home directory needs to have Read AND Execute access rights.

Apache 1.3.x (Microsoft Windows 用)> <ActiveScript
Last updated: Fri, 18 Jul 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites