Friday, April 27, 2012

Több PHP verzió IIS-en

A következő cikkben bemutatom, hogy hogyan lehet kényelmesen több PHP verziót használni egy IIS szerveren. Feltételezzük, hogy az Olvasó rendelkezik egy már meglévő PHP telepítéssel, mely tökéletesen működik, ha mégsem, kérem kövesse az egyik előző cikket: LINK.

Első lépésként töltsük le a kívánt php verziókat, csomagoljuk ki őket, illetve töltsük le és telepítsük a PHP Manager for IIS nevű IIS addont. Ez egy egyszerű kis felület új PHP verzió hozzáadásához, vagy verzióváltáshoz és egyéb beállításokhoz . Telepítés után a site-okon belül a beállítások ikonjainál fogunk találkozni vele.

Ha rákattintunk, először láthatunk egy sárga hátteres feliratot, ahol különböző ajánlásokat tesz a PHP helyes beállítása érdekében, ezeket nem árt ha megfontoljuk, illetve kijavítjuk ( lehetőség van arra, hogy ő kijavítsa nekünk).

Új verziót a ,,Register new PHP version" linkre kattintva vehetünk fel, itt csak ki kell választanuk a kívánt PHP verzió fastcgi-s exe-jét. Mellette találjuk a verzió választót, illetve elérhetjük a phpinfo-t.

Ezen beállítások alatt nagyjából ezen analógia alapján be tudjuk állítani a (hiba) logolást, illetve PHP extension-öket tudunk hozzáadni, be -és kikapcsolni.

Monday, April 16, 2012

IIS7.5 PHP Fast-CGI


Ebben a cikkben szeretném megmutatni, hogy hogyan kell PHP-t telepíteni Windows-os környezetbe, 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, erő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.



2. Töltsük le a kívánt PHP verziót, abból is a non-thread safe -et  (ww.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 Mappingot. 

4. A Handler Mapping -on belül válasszuk a jobb oldali sávban az Add Module Mapping-ot.

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. 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
iniFilePath

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\ .
PATH
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.

Előfordulhat, hogy az újonnan létrehozott php mappában az IIS-nek nincs joga futtatni a php-fastcgi.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.