Download - Microsoft, PHP and IIS7
Nick HodgeMicrosoft AustraliaProfessional [email protected]
Jorke OdolphiMicrosoft AustraliaWeb Infrastructure [email protected]
This is not your father’s Microsoft
IIS Request Processing
Server functionality is split into ~ 40 modules...Modules plug into a generic request pipeline…Modules extend server functionality through a public module API.
Send ResponseSend ResponseLogLog CompressCompress
NTLMNTLM BasicBasic
DeterminDetermine e
HandlerHandler
CGICGIStatic Static FileFile
ISAPIISAPI
AuthenticationAuthentication
AnonAnon
SendResponseSendResponse
AuthenticationAuthentication
Authorization
ResolveCache
ExecuteHandlerExecuteHandler
UpdateCache…
…
…
ASP.NET
PHP
Monolithic implementation Install all or all or nothingnothing…
Extend server functionality only through ISAPIISAPI…
IIS 6.0 ASP.NET Processing
Runtime limitations
Only sees ASP.NET requests
Feature duplication
Send ResponseSend ResponseLogLog CompressCompress
NTLMNTLM BasicBasic
DeterminDetermine e
HandlerHandler
CGICGIStatic Static FileFile
ISAPIISAPI
AuthenticationAuthenticationAnonAnon
…
…
AuthenticationFormForm
ssWindowWindow
ss
Map Handler
ASPXASPXTraceTrace
………
…
aspnet_isapi.dll
IIS6 Application Framework support
Common Gateway Interface (CGI) for CGI and PHP applications Benefits
Very simple to implement and use – single-threaded execution
Disadvantages Poor performance due to high process creation cost Creates and passes request data to a new CGI process Waits for CGI process to produce response Shuts down CGI process
IIS6 Application Framework support
Internet Server Application Programming Interface (ISAPI) Benefit of ISAPI
Can be extremely fast when written correctly
Disadvantage of ISAPI
Must be thread-safe (many PHP extensions are not!)
Requires development in C++
PHP Setup
Per-site PHP configurationConfiguring FastCGI process pool
<fastCgi> <application fullPath="C:\PHP\php-cgi.exe" arguments="-d my.website=website1"> <environmentVariables> <environmentVariable name="PHPRC" value="C:\WebSites\website1" /> </environmentVariables> </application></fastCgi>
Combination of fullPath and arguments uniquely identify FastCGI process pool definition
PHPRC environment variable contains path to the php.ini file
IIS Extensions
Mod_rewrite support for URL rewriting
SQLServer 2008
Express version with Management Studio Free (as in beer) download
MySQL .NET drivers (data import/export)
Open source: Microsoft SQLServer Driver for PHP
Resources
http://learn.iis.nethttp://learn.iis.net
http://port25.technet.comhttp://port25.technet.com
http://codeplex.com/http://codeplex.com/http://port25.technet.com/archive/2008/07/25/osp.aspxhttp://port25.technet.com/archive/2008/07/25/osp.aspx