IIS7.5 PHP Fast-CGI

By | 2012. április 15.

Ebben a cikkben szeretném megmutatni, hogy hogyan kell PHP-t telepíteni Windows-os környezetben, IIS7.5-ös web-kiszolgálóra. A nagyobb biztonság, sebesség és stabilitás érdekében szeretnénk FastCGI-vel futtatni a PHP-t. A PHP non-thread-safe verzióját fogjuk használni, hogy miért ezt használjuk, és miért épp FastCGI-t, erről bővebben itt olvashatsz.

Lehetőségünk van a Microsoft Web Platform Installer nevű eszközzel telepíteni, de elég sok hátránya van, és nem is biztos, hogy azt a verziót telepíti amire szükségünk lehet, így éles rendszereknél biztonságosabb, és átláthatóbb ha kézzel állítjuk be.

A cikkben a Windows Server 2008 R2 Enterprise verzióját használjuk, így nem a parancssoros lépéseket fogom megmutatni, de elég sok infó található arról is.

Feltételezem hogy az Olvasó rendelkezik már telepített Windows Server-rel, és IIS7.5-tel. A leírás a következő rendszereken működik: Windows Server: 2008/2008R2, Windows: 7. (Windows 7 operációs rendszerből legalább Professional változatra van szükségünk, hogy IIS-t telepíthessünk rá!)

A telepítés

  1. Server Manager -> Roles -> Add Role Services és itt válasszuk (telepítsük) a CGI-t.CGI telepítés
  2. Töltsük le a kívánt PHP verziót, abból is a non-thread safe-et (www.php.net/downloads), és csomagoljuk ki, pl a C:\php mappába.
  3. Nyissuk meg az IIS Manager-t, kattintsunk a szerverünkre, válasszuk a Handler Mappings-et
  4. A Handler Mappings -en belül válasszuk a jobb oldali sávban az Add Module Mapping-et.Handler Mapping
  5. A képen látható módon állítsuk be a mappinget, majd az OK -ra kattintás után válaszoljunk IGEN-nel, hogy engedélyezze a PHP FastCGI-s futtatását (automatikusan létrehoz egy applications-t).

A beállítás

Végeztünk is a PHP és FastCGI beállításával IIS7.5-re. Ha friss rendszeren vagyunk, akkor valószínűleg 500-as hibával el fog szállni a rendszer (0x800736b1). Kétféle hiba okozhatja ezt:

  1. Friss rendszeren valószínűleg nincs telepítve a Microsoft Visual C++ 2008 Redistributable Package (x86). Fontos megjegyezni, hogy függetlenül, hogy a szerverünk 64 bites, nekünk a 32 bites verzió kell!
  2. Másik hiba az lehet, hogy a php nem találja a php.ini -t, pontosabban a windows mappában keresi, ezt a következőképpen orvosolhatjuk:

Nyissuk meg a regedit-et. HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node (32 bites Win7-nél a SOFTWARE-en belül találjuk). Itt jobklikk, new key. A key neve legyen PHP, és hozzunk létre benne egy sztringet, melynek neve legyen: iniFilePath és értéke legyen: c:\php

regedit

Ha megvan: Start-> Control Panel -> Keresőbe advanced system settings -et írjuk be -> Environment Variables -> válasszuk ki a PATH-et és a végére írjuk hozzá a következőt: ;c:\php\ .

Útvonal

Ha minden lépést elvégeztünk, akkor többnyire a phpinfo() hívására megjelenik a phpinfo táblázat, melyből megtudhatjuk, hogy azt a php.ini -t töltötte-e be, amit szerettünk volna, illetve más infomrációkat a telepített PHP-ról.

PHP Info

Előfordulhat, hogy az újonnan létrehozott php mappában az IIS-nek nincs joga futtatni a php-cgi.exe-t (és a dll-eket), nézzük meg, javítsuk ki! Ha még mindig nem menne, nézzünk bele az IIS logjába (inetpub/logs mappában siteonként).

Alap beállításként a php.ini-ben engedélyezve van a log_errors( = On), ilyenkor ha bármilyen hiba van a php kódban, az alap 500 -as hibát fogja dobni a szerver (Internal Server Error), és így elég nehéz debugolni, ezért állítsuk Off -ra !

Ha sikerült megheggesztenünk, és minden tökéletesen működik, akkor hurrá, van egy magas rendelkezésre állású rendszerünk. Nyilván ha van lehetőségünk, PHP-t Linux-on fogunk futtatni, de lehet, hogy nincs elég erőforrásunk, így nem tudjuk az ASP.NET -es és PHP -s siteokat külön szerveren hosztolni, ilyenkor ez a legjobb megoldás.