Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / kreuz-und-quer / tutorials-info-neuigkeiten-php / php-52x-auf-iis-60-installieren.php

PHP 5.2.x auf IIS 6.0 installieren

Die Fangemeinde des PHP-Performance-Blogs wächst langsam aber sicher, was mich sehr freut. Und manchmal bekommt man sogar einen ganzen Beitrag von einem Leser zugeschickt. So getan von Tobias alias tcomic – und vielen Dank auch an dieser Stelle nochmal. Thema ist die Installation von PHP und einen Windows-Server mit dem IIS – und jeder, der PHP schon mal installiert hat (ohne XAMPP 😉 ) weiß, dass das manchmal gar nicht so einfach ist.

Vorraussetzungen

Die Vorraussetzungen für dieses Tutorial sind:

Hinweis: Dieses Tutorial bezieht sich auf die PHP Version 5.2.3 unter IIS 6.0 auf einem Windows Server 2003 mit SP1 als DC oder Clientserver in einem AD. Weiter werden in diesem Tutorial die Anbindungen von PHP an einen MSSQL- und einen MySQL-Server erläutert.

Wichtig: Bitte unbedingt das ZIP-File verwenden. Mit dem Installer habe ich NUR schlechte Erfahrungen gemacht!

Verzeichnisse anlegen

Zuerst legen wir eine Verzeichnisstruktur für den PHP-Webserver an:
– C:\Server\htdocs
– C:\Server\php5
– C:\Server\includes
– C:\Server\session
– C:\Server\tmp

Diese Verzeichnisse müssen von Hand angelegt werden.

Hinweis: Selbstverständlich können auch andere Verzeichnisstrukturen verwendet werden, allerdings wird dieses Tutorial auf dieser Struktur aufbauen.

PHP Installieren

Das installieren von PHP ist denkbar einfach:

Jetzt haben wir PHP an und für sich installiert, lediglich das System weiss noch nichts davon, darum müssen wir noch zwei Umgebungsvariablen richtig setzen:

Hinweis: Es ist auch möglich keine Umgebungsvariablen zu setzen, sondern stattdessen alle PHP DLLs nach C:\Windows zu verschieben. Allerdings wäre dies eine sehr unschöne Methode!

PHP INI Einstellungen

Jetzt beginnt ein wichtiger Schritt: Die Konfiguration von PHP selbst und das Laden der Zusatzmodule um eine Verbindung zu einem MSSQL- und / oder MySQL-Server herstellen zu können.

Um die php.ini zu editieren kann diese in einem einfachen Texteditor (Notepad) geöffnet werden.
Grundeinstellungen:

Variable Alte Einstellung Neue Einstellungen
include_path =
(include_path variablen gibt es mehrere, daher ist es sinnvoll die unter „Windows: „\path1;\path2“ zu verwenden)
„.;c:\php\includes“ „C:\Server\includes“
extension_dir = „./“ „C:\Server\php5\ext“
upload_tmp_dir = „C:\Server\tmp“
session_save_path = „/tmp“ „C:\Server\session“

Wichtig: Dies sind lediglich die Grundeinstellungen, welche benötigt werden, damit PHP auf IIS 6.0 läuft, allerdings wurde keinerlei Bezug auf die Sicherheit von PHP genommen!
Daher: Für Testumgebungen ist diese Konfiguration zweckmässig, für den Produktivbetrieb aber keinesfalls!

Dynamic Extensions:

PHP erlaubt es Dynamic Extensions zu laden, um weiter Funktionen zu Verfügung zu stellen wie z.B. Datenbankverbindungen oder Grafikbibliotheken.
Genau genommen ist eine Dynamic Extension nichts anderes als eine zusätzlich Klassenbibliothek.

Für unseren fall benötigen wir lediglich zwei Extensions:

Geladen werden die Extensions durch das Entfernen des führenden ; unter „Dynamic Extensions“ in der php.ini.

Wichtig: Je nach Anwendung sollten weitere Extensions geladen werden.

AD Benutzer erstellen

Um die IIS-Zugriffsberechtigungen nicht einem Standard User überlassen zu müssen sollte dafür ein eigener Benutzer in der Domäne erstellt werden.
In diesem Beispiel nennen wir den User „Webserver“. Die Einstellungen sollten so sein, dass das Passwort nie abläuft und nicht geändert werden kann.

Hinweis: Wenn Sie keinen AD-Benutzer erstellen möchten, dann lassen Sie dieses Kapitel, das Kapitel „NTFS Berechtigungen setzen“ und den entsprechenden Teil im Kapitel „IIS Einstellungen“ einfach aus. Sicherheitstechnisch ist es allerdings sinnvoll einen eigenen AD-Benutzer zu erstellen!

IIS Einstellungen

So, nun kommen wir zum Kernpunkt unserer Installation – zur IIS Konfiguration.

Konfigurationsschritte:

Sicherheitskonfiguration:
– Unter > Directory Security > Authentification and access control > Edit, bei Enable anonymous access den Haken setzen und den oben erstellten Benutzer eingeben.
– Jetzt versucht IIS mit diesem Benutzer auf die Ressourcen zuzugreifen.

NTFS Berechtigungen setzen

Da unser Benutzer im IIS eingestellt ist, benötigt er noch die entsprechenden Berechtigungen, um überhaupt auf die Ressourcen zugreifen zu können.
Die Berechtigungen für unseren User setzen wir wie folgt:

Pfad Berechtigungen
C:\Server Read, Execute
C:\Server\htdocs Read, Execute, Write, Change*
C:\Server\php5 Read, Execute
C:\Server\includes Read, Execute, Write, Change
C:\Server\session Read, Execute, Write, Change
C:\Server\temp Read, Execute, Write, Change

*Nur benötigt wenn z.B. ein Fileupload o.ä. realisiert werden soll (Sicherheitslücke!!!).

Wichtig: Der Benutzer Everyone bzw. Jeder benötigt in C:\Server\php5 unbedingt Read und Execute Rechte, sonst kann IIS das PHP-Modul nicht laden, da dieses geladen wird, bevor IIS den eingetragenen Benutzer verwendet (!)

MSSQL – Verbindung

Um PHP mit einem Microsoft SQL Server verwenden zu können, muss die Datei ntwdblib.dll aus dem Verzeichnis C:\Server\php5 nach C:Windows/System32 kopiert werden.

Wichtig: Die von PHP mitgelieferte ntwdblib.dll funktioniert of nicht richtig, daher einfach das Web durchsuchen und die Datei neu herunterladen bis es klappt!

Hinweis: IIS muss neu gestartet werden!

MySQL – Verbindung

Die Anbindung von PHP an MySQL Datenbanken ist genau so zu handhaben wie die Anbindung an MSSQL Datenbanken – einfach mit einer anderen DLL.
Kopiert wird hier die Datei libmysql.dll von C:\Server\php5 nach C:Windows/System32

Hinweis: IIS muss neu gestartet werden!

Informatives

PHP auf IIS?
Viele denken, dass PHP zu Apache und ASP zu IIS gehört. Dies ist allerdings nicht unbedingt so und auch performancetechnisch sind keine grossen Unterschiede zwischen PHP auf Apache oder IIS zu bemerken (allerdings nur, wenn PHP per isapi eingebunden wird).

Updaten?
Die PHP Installation sollte regelmässig aktualisiert werden, um Sicherheitslücken frühzeitig zu schliessen. Dazu wird einfach die neuste Version von PHP heruntergeladen und nach C:\Server\php5 entpackt! Aber vorher erst eine Sicherheitskopie erstellen, damit der Server nicht lange off ist, wenn es nicht klappen sollte!

Isapi?
Isapi ist eine Form wie zusätzliche Module zu IIS geladen werden können. Ausgeschrieben bedeutet es: internet service application programmer interface und ermöglicht eine sehr schnelle und effiziente Bearbeitung von Requests, welche IIS-fremde Module ansprechen (in unserem Tutorial natürlich PHP).
Die benötigten Isapi-DLLs werden beim starten von IIS in den RAM geladen. Weiter werden bis zu 14 Threads pro Prozessor für IIS inkl. Isapi zur Verfügung gestellt, welche nach dem Starten in den Leerlauf fallen bis ein Request kommt, diesen abarbeiten, um danach wieder in den Leerlauf zu fallen.
Auf diese Weise hat man immer etwas Last auf dem Webserver, auch wenn er gerade gar nichts macht. Allerdings können ankommende Requsts sofort bearbeitet werden, ohne dass die Zusatzmodule erst noch geladen werden müssen.
Auf diese Weise erhöht man die Antwortzeit des Webservers und die maximale Anzahl an Usern, welche „Gleichzeitig“ online sein können um ca. 900% im Vergleich zu CGI Applikationen (z.B. Perl oder PHP als CGI in IIS integriert)!

Ich hoffe dieses Tutorial hilft euch weiter, wenn ihr mal wieder den Server beschimpft, dass er nicht das tut, was ihr von ihm wollt 😉