PHP programmieren unter Windows: Webanwendungen mit IIS, SQL Server, Active Directory, Exchange

Arno Hollosi

Published by Microsoft Press Deutschland

A Note Regarding Supplemental Files

Supplemental files and examples for this book can be found at http://examples.oreilly.com/9783866454477/. Please use a standard desktop web browser to access these files, as they may not be accessible from all ereader devices.

All code files or examples referenced in the book will be available online. For physical books that ship with an accompanying disc, whenever possible, we’ve posted all CD/DVD content. Note that while we provide as much of the media content as we are able via free download, we are sometimes limited by licensing restrictions. Please direct any questions or concerns to booktech@oreilly.com.

Vorwort

PHP hat die Welt verändert: Keine andere Sprache hat so nachhaltig die Entwicklung des Webs beeinflusst und vorangetrieben, von einfachen Homepages über Social Software und Geschäftsanwendungen bis hin zu den größten Websites weltweit, PHP war immer vorne mit dabei. Parallel dazu hat Microsoft mit dem Windows-Betriebssystem den Computer in jeden Haushalt gebracht und mit IIS, SQL Server, Active Directory und Exchange Server eine solide und leistungsstarke Plattform für Organisationen und Unternehmen geschaffen. Microsoft hat zudem das Potenzial erkannt, das in der Kombination von PHP mit seinen Produkten steckt, entwickelt PHP nun gezielt mit und fördert die Interoperabilität mit seiner Plattform.

Wenn Sie, so wie ich, PHP bisher größtenteils mit Apache und MySQL eingesetzt haben, dann lassen Sie sich von der Funktionsvielfalt, der Stabilität, der Leistungsfähigkeit und der durchgängigen Sicherheitsarchitektur der Microsoft-Plattform begeistern. Das Buch zeigt Ihnen, wie Sie Ihre PHP-Anwendungen mit IIS und SQL Server effektiv und sicher betreiben können und wie Sie auf Benutzerdaten in Active Directory und auf Kalender und E-Mails in Exchange Server zugreifen können.

Für die Entstehung eines Buchs benötigen Autoren ein Umfeld, das sie unterstützt und motiviert. Ich bedanke mich bei meiner Lektorin Sandra Michel für die gute Zusammenarbeit, bei Christian Wenz für das kundige Fachlektorat, bei Manfred Steyer, dass er mich zu diesem Buch angestiftet hat und von dem ich immer Neues lerne, bei Agnes Krispel, Julia Egger und meinen Kollegen und Kolleginnen auf der Fachhochschule für das angenehme und inspirierende Arbeitsumfeld, bei Bernd Martin, Gregor Karlinger und meinen ehemaligen Kolleginnen und Kollegen der IKT-Stabsstelle, die mir gezeigt haben, wie kreativ, engagiert und lustig ein Team sein kann, bei meinen Lehrern und Mentoren, die mich auf meinem Weg begleitet haben, und bei meinen Freunden und meiner Familie, ohne deren Rückhalt ich mir ein Leben nicht vorstellen kann.

Graz im Juni 2010

Arno Hollosi

Einleitung

In dieser Einleitung:

„PHP und Microsoft“

„Ziel des Buchs und Voraussetzungen“

„Aufbau des Buchs“

„Support für dieses Buch“

„Kontakt zum Autor“

PHP und Microsoft

In den letzten beiden Jahren haben sich sowohl PHP als auch Produkte aus dem Hause Microsoft rasant entwickelt. Mit PHP 5.3 wurde ein wichtiger Meilenstein erreicht: Mit den Namespaces für Klassen und Funktionen ist PHP endgültig eine vollwertige objektorientierte Sprache geworden, Lambda-Funktionen und Closures, das PHAR-Archivformat und verbessertes Speichermanagement sind nur ein kleiner Auszug der Änderungen die PHP 5.3 mit sich gebracht hat.

PHP 5.3 ist aber auch aus einem anderen Grund bemerkenswert: Mit PHP 5.3 hat die Zusammenarbeit von Microsoft mit dem PHP-Entwicklerteam einen wichtigen Meilenstein erreicht. Das PHP-Windows-Team rund um Pierre Joye hat wesentliche Teile von PHP für die Windows-Plattform optimiert und so ist PHP 5.3 das leistungsstärkste PHP, das es je für Windows gab.

Parallel dazu hat Microsoft mit IIS 7, verfügbar seit Windows Server 2008 und Windows Vista, einen Webserver geschaffen, bei dem PHP dank der neuen FastCGI-Anbindung nicht nur schneller und stabiler läuft, sondern auch von der modularen und auf Sicherheit ausgerichteten Architektur von IIS 7 profitiert. Wie Sie im ersten Teil des Buchs noch sehen werden, ist IIS 7 eine wirklich hervorragende Plattform, um PHP-Anwendungen zu betreiben.

Microsoft hat im Zuge seiner Interoperabilitäts- und Open Source-Initiativen viele weitere Verbesserungen im PHP-Umfeld eingebracht: Mit dem Webplattform-Installer können PHP-Anwendungen wie WordPress oder Joomla! in wenigen Mausklicks installiert werden, der PHP-Beschleuniger WinCache erhöht die Leistung von PHP-Programmen um ein Vielfaches, mit dem neuen SQL Server-Treiber steht ein funktionsreicher Treiber für PHP zur Verfügung, und die PHP-Entwicklerpakete und Beispiele für Windows Azure, Virtual Earth, Webslices, Silverlight und SQL Server (um nur einige zu nennen) helfen die Einarbeitungs- und Entwicklungszeit zu verkürzen. Kurz: Microsoft hat PHP unter Windows einen erheblichen Schritt weitergebracht.

Auch bei SQL Server, Active Directory und Exchange Server haben die letzten beiden Jahre eine kontinuierliche Weiterentwicklung gebracht, wobei nicht nur Augenmerk auf neue Funktionen gelegt worden ist, sondern auch auf verbesserte Interoperabilität mit anderen Produkten. So ist beispielsweise die SOAP-Schnittstelle der Exchange Web Services von Exchange Server 2010 sehr einfach von PHP aus zu programmieren und über LDAP können alle wichtigen Funktionen von Active Directory angesprochen werden.

Auch die Entwicklerdokumentation der Microsoft-Produkte und Schnittstellen hat sich ständig verbessert: Die MSDN-Bibliothek lässt heute kaum eine Frage unbeantwortet und die zahlreichen Blogs der Microsoft-Entwicklerteams geben einen Einblick in aktuelle Entwicklungen und wichtige Tipps und Tricks.

Ziel des Buchs und Voraussetzungen

Dieses Buch will Ihnen beim Einstieg in die Windows-Welt behilflich sein: Es führt Sie Schritt für Schritt an die PHP-Programmierung von IIS, SQL Server, Active Directory und Exchange Server heran. Sie lernen dabei, wie Sie Ihre Arbeitsumgebung einrichten, wie die Architektur und innere Funktionsweise der behandelten Systeme aussieht und wie Sie mit PHP typische Aufgaben bewältigen können. Die Beispiele und Listings helfen Ihnen dabei, Ihre Ziele schnell und einfach zu erreichen.

Das Buch wendet sich an PHP-Entwickler, die bereits über Grundwissen der PHP-Programmierung verfügen und aus beruflichem oder privatem Interesse Microsoft-Technologien mit PHP nutzen wollen. Detaillierte Kenntnis der verwendeten Technologien und der benutzten Microsoft-Produkte wird nicht vorausgesetzt, jedoch sollte ein allgemeines Verständnis vorhanden sein.

Da alle vier vorgestellten Systeme sehr umfangreich sind, können diese im Buch natürlich nicht vollständig behandelt werden. Das Buch versucht deshalb, Ihnen die wichtigsten Grundlagen, Konzepte und Kniffe für die PHP-Programmierung zu zeigen und so die Einstiegshürde zu verringern. Mit dieser Wissensbasis sollten Sie für Ihre weitere Entdeckungsreise gut gerüstet sein.

Aufbau des Buchs

Das Buch orientiert sich stark an dem für die Praxis notwendigen Wissen, das ein PHP-Entwickler benötigt, um mit IIS, SQL Server, Active Directory und Exchange Server rasch und sicher Anforderungen in eigenen Webanwendungen umzusetzen. Die Auswahl der Technologien fiel bei der Vielzahl der von Microsoft angebotenen Produkten und Systeme nicht einfach: Warum nicht auch über Sharepoint Services, Office-Dokumente, WCF-Datendienste oder COM-Programmierung schreiben?

Das Buch geht von den Anforderungen einer typischen PHP-Anwendung aus, die sich in ein Windows- und Microsoft-Umfeld, möglicherweise ein Unternehmensintranet, integrieren will: Die PHP-Anwendung soll auf einer Windows-Plattform laufen (IIS), eine Datenbank verwenden (SQL Server), die vorhandene Benutzerverwaltung von Windows-Benutzern und -Gruppen nutzen können (Active Directory) und E-Mails versenden und Termine planen können (Exchange Server).

Das Buch ist entsprechend der Technologien in vier Teile geteilt, in die Sie je nach Interesse und Vorkenntnissen direkt einsteigen können. Jeder Teil beginnt dabei mit der Installation der notwendigen Software, bevor Grundlagen und PHP-Programmierung beschrieben werden. Die vier Teile sind:

Teil I zeigt, wie PHP in die Internetinformationsdienste (IIS) integriert werden kann und wie IIS eine Anforderung abarbeitet. Dieser Teil vermittelt Ihnen ein solides Verständnis der Konfiguration und Funktionsweise von IIS und ist vor allem für Umsteiger von anderen Webservern interessant. In eigenen Kapiteln wird gezeigt, wie Sie Ihre PHP-Anwendung gegen Angriffe absichern können, wie Sie mit Caching die Leistung Ihrer PHP-Anwendung um ein Vielfaches steigern können und wie Sie mit URL Rewrite benutzerfreundliche URLs erzeugen können.

Teil II behandelt die Programmierung von SQL Server oder genauer, dessen Datenbankmoduls. Es wird gezeigt, wie Sie Datenbanken und Tabellen in SQL Server anlegen und verwalten können und wie die Syntax der wichtigsten T-SQL-Anweisungen aussieht. Die Ansteuerung von PHP erfolgt über den neuen SQL Server-PHP-Treiber, der unter anderem interessante Funktionen zur Konvertierung von Datentypen zwischen PHP und SQL Server bietet. Auch die für typische PHP-Anwendungen hilfreiche Volltextsuche wird behandelt.

Teil III führt Sie in Active Directory, Domänen und Gesamtstrukturen ein. Die hierarchische Datenstruktur und die wichtigsten Attribute der Einträge werden mithilfe eines selbst programmierten LDAP-Browsers vorgestellt. Aufbauend darauf wird gezeigt, wie Sie Benutzer in Active Directory über die LDAP-Schnittstelle suchen und authentifizieren können, Eigenschaften ändern, Mitgliedschaften in Gruppen definieren, neue Benutzer anlegen oder Passwörter zurücksetzen können.

Teil IV stellt die Programmierung von Exchange Server mithilfe der Webservice-Schnittstelle vor: Operationen um E-Mails zu senden, nach Kontakten zu suchen, Besprechungen anzulegen und Zuund Absagen zu senden werden behandelt. Der Teil enthält einige wertvolle Tipps, die das nicht immer reibungslose Zusammenspiel zwischen Exchange Server und PHP ermöglichen.

Hinweis

Die Listings und Beispiele zu diesem Buch können Sie unter folgenden Adressen herunterladen: http://xmp.net/php/ oder http://go.microsoft.com/fwlink/?LinkID=196224 oder msp.oreilly.de/support/9783866454477/616.

Support für dieses Buch

Microsoft Press hat sich um die Richtigkeit der im Buch sowie im Archiv enthaltenen Informationen bemüht. Mit Anmerkungen, Fragen oder Verbesserungsvorschlägen zu diesem Buch oder diesem Archiv können Sie sich an Microsoft Press wenden:

Per E-Mail:

info@microsoft-press.de

Per Post:

Microsoft Press

c/o Microsoft Deutschland GmbH

Konrad-Zuse-Str.1

85716 Unterschleißheim

Weitere Supportinformationen zu diesem Buch und dem Begleit-Archiv finden Sie auf der Support-Website von Microsoft Press unter http://www.microsoft-press.de/support.asp

Beachten Sie bitte, dass unter den genannten Adressen kein Produktsupport geleistet wird. Informationen über den Produktsupport finden Sie auf der Microsoft-Produktsupportwebsite unter der Adresse http://support.microsoft.com.

Kontakt zum Autor

PHP, Windows und angrenzende Technologien sind in einem ständigen Wandel begriffen. Über Anregungen, Tipps und Tricks, sowie Ihre Erfahrungen beim PHP-Programmieren von Microsoft-Technologien freue ich mich besonders. Auch Hinweise zu Fehlern oder Kritik am Buch ist sehr willkommen.

Sie können mich per E-Mail unter ahollosi@xmp.net erreichen. Weitere Informationen zum Buch bzw. zu PHP und Windows finden Sie auf http://xmp.net/php/

Teil I. Internetinformationsdienste (IIS)

In diesem Teil:

Kapitel 1

Kapitel 2

Kapitel 3

Kapitel 4

Kapitel 5

Kapitel 6

Kapitel 7

Kapitel 8

Kapitel 1. Einrichten der Arbeitsumgebung

In diesem Kapitel:

„IIS einrichten“

„PHP einrichten“

„Konfigurieren von PHP in IIS“

„Einrichten mit dem Webplattform-Installer“

„Sichern der Konfiguration“

„Eine erste Beispielapplikation“

„Remotezugriff“

„Zusammenfassung“

In diesem Kapitel wird die Einrichtung der Arbeitsumgebung, bestehend aus PHP und dem Webserver Internetinformationsdienste (Internet Information Services, IIS), beschrieben. Bei der Installation werden vorerst nur die minimal notwendigen Komponenten installiert, um den Ressourcenverbrauch niedrig zu halten und keine zusätzlichen Angriffsflächen zu erzeugen.

Als Basis dienen in diesem Buch die zum Zeitpunkt des Buchdrucks (Juni 2010) aktuellen Versionen der einzelnen Komponenten: PHP 5.3.2 in der manuellen Installation und PHP 5.2.13 bei der Installation mittels Webplattform-Installer, IIS immer in der aktuellen Version 7 (IIS 7.5). Als Betriebssysteme werden Windows Server 2008 R2 und Windows 7 Ultimate verwendet. Die Beschreibungen sollten auch (in leicht modifizierter Form) auf andere Betriebssysteme anwendbar sein.

IIS 6, obwohl noch weit verbreitet, wird in diesem Buch nicht behandelt. Die Unterschiede zwischen IIS 6 und IIS 7 sind groß. IIS 7 bietet viele neue, vor allem für PHP-Programmierer interessante Features, die in IIS 6 nicht verfügbar sind. Zudem hat sich die Konfiguration grundlegend geändert, sodass Beschreibungen für IIS 7 nicht auf IIS 6 angewendet werden können.

In den folgenden Abschnitten wird als Erstes die Einrichtung von IIS 7 beschrieben, dann die Installation von PHP, sowie die Einrichtung von PHP in IIS. Dabei wird sowohl die Einrichtung mithilfe der Windows-Managementtools beschrieben, als auch die Einrichtung über die Befehlszeile. Letzteres ist vor allem für fortgeschrittene Benutzer interessant. Abschließend wird als dritte Variante noch die Installation über den Microsoft Webplattform-Installer beschrieben, der viele der manuellen Konfigurationsschritte automatisiert.

IIS einrichten

Der IIS-Webserver ist in der aktuellen Version 7 vollständig modular aufgebaut. Damit ist eine feine Granularität der zur Auswahl stehenden Features für unterschiedlichste Einsatzszenarien gegeben. Sie können IIS damit genau nach Ihren Wünschen und Anforderungen zusammenstellen und sparen Systemressourcen, da nur die benötigten Module installiert werden. Zudem bietet ein so konfigurierter Server eine kleinere Angriffsfläche und damit erhöhte Sicherheit gegenüber Angriffen aus dem Internet.

IIS kann auf unterschiedliche Weise installiert werden. Im Folgenden wird die Installation mithilfe des Server-Managers und über die Eingabeaufforderung beschrieben. Die Installation über die Eingabeaufforderung kann auch mit der Windows Server 2008 R2 Core-Edition durchgeführt werden.

Die beschriebene Installation fügt nur den für PHP notwendigen CGI Rollendienst hinzu. Andere Rollendienste können je nach Bedarf installiert werden. Sind zusätzliche Installationen notwendig, wird in den jeweiligen Kapiteln entsprechend darauf hingewiesen.

Installieren mithilfe des Server-Managers

Die Installation mithilfe des Server-Managers führt Sie mit einem Assistenten durch die einzelnen Schritte der IIS-Installation.

Starten Sie den Server-Manager, den Sie im Startmenü unter Alle Programme/Verwaltung/ServerManager finden.

Wählen Sie den Befehl Rollen/Rollen hinzufügen aus.

Der Assistent Rollen hinzufügen erscheint. Bestätigen Sie den Schritt Vorbemerkungen mit Weiter.

Im Schritt Serverrollen auswählen wählen Sie aus der Liste die Option Webserver (IIS) aus und bestätigen Sie mit Weiter.

Bestätigen Sie den Informationsschritt Webserver (IIS) mit Weiter.

Wählen Sie aus der Liste der Rollendienste die Option Webserver/Anwendungsentwicklung/CGI, wie in Abbildung 1.1 zu sehen, aus und bestätigen Sie mit Weiter.

Abbildung 1.1 CGI-Rollendienst zu Webserver (IIS) hinzufügen

Bestätigen Sie den Schritt Installationsauswahl bestätigen mit Installieren.

Nach erfolgter Installation schließen Sie den Assistenten mit Schließen.

Damit haben Sie die Internetinformationsdienste (IIS) erfolgreich installiert. Ein Neustart von Windows ist nicht notwendig. Sie können die erfolgreiche Installation von IIS überprüfen, indem Sie einen Webbrowser starten und die Website http://localhost/öffnen. Die Standardwebsite mit einem Begrüßungstext wird angezeigt.

Installieren von der Befehlszeile aus

Um IIS von der Befehlszeile aus zu installieren, benötigen Sie das Tool pkgmgr.exe. pkgmgr.exe ist das neue Befehlszeilentool unter Windows Server 2008, um optionale Windows-Features zu verwalten, und ersetzt das alte Tool sysocmgr.exe.

Hinweis

Alle Aktionen müssen mit Administratorrechten ausgeführt werden. Standardmäßig hat bei Windows Server 2008 nur das integrierte Administratorkonto diese Rechte, nicht jedoch andere Benutzerkonten, selbst wenn diese der Administratorengruppe angehören.

Starten Sie ein Eingabeaufforderungsfenster mit Administratorrechten, das Sie im Startmenü unter Alle Programme/Zubehör/Eingabeaufforderung finden oder über das Startmenü im Textfeld Programme/ Dateien durchsuchen durch Eingabe von cmd aufrufen können.

Führen Sie folgenden Befehl aus, um die IIS-Serverrolle und den CGI-Rollendienst zu installieren:

pkgmgr /iu:IIS-WebServerRole;IIS-CGI

Überprüfen Sie die erfolgreiche Installation mit

echo %errorlevel%

Damit haben Sie IIS erfolgreich von der Eingabeaufforderung aus installiert. Sie können die erfolgreiche Installation von IIS überprüfen, indem Sie einen Webbrowser starten und die Website http://localhost/öffnen. Die Standardwebsite mit einem Begrüßungstext wird angezeigt.

PHP einrichten

Nachdem Sie IIS erfolgreich eingerichtet haben, wird als Nächstes PHP installiert und für die Verwendung mit IIS konfiguriert. Die Konfiguration wird dabei wieder sowohl per IIS-Manager beschrieben, als auch die Konfiguration von PHP von der Befehlszeile aus. Den Weg über die Befehlszeile sollten nur geübte Benutzer wählen, wenn entweder keine graphische Oberfläche vorhanden ist (wie zum Beispiel bei der Windows Server 2008 R2 Core Edition) oder eine automatisierte Einrichtung per Skript erfolgen soll.

PHP installieren

Um PHP zu installieren, gehen Sie wie folgt vor:

Öffnen Sie die Website http://windows.php.net/download/.

Laden Sie die aktuelle PHP-Version 5.3.x (zum Zeitpunkt des Buchdrucks: 5.3.2) als Zip-Archiv herunter. Wählen Sie die Variante VC9 x86 Non Thread Safe aus.

Entpacken Sie das Zip-Archiv in einem Ordner Ihrer Wahl. Im Buch wird im Folgenden der Ordner C:\PHP verwendet.

Kopieren Sie die Datei C:\PHP\php.ini-development nach C:\PHP\php.ini.

Öffnen Sie die Datei C:\PHP\php.ini mit einem Editor.

Suchen Sie die Zeile für die Konfiguration von date.timezone und setzen Sie den Wert wie folgt:

date.timezone = »Europe/Berlin«.

Setzen Sie die Option cgi.force_redirect = 0.

Hinweis

Es wird auch empfohlen, die Option fastcgi.impersonate = 1 zu setzen, vorerst können Sie aber auf das Setzen dieser Option verzichten. Die Option beeinflusst, als welcher Benutzer PHP ausgeführt wird und ist in Kapitel 5, Abschnitt „Identität und Zugriffsrechte“, genauer beschrieben.

Um zu überprüfen, ob die Installation erfolgreich war, öffnen Sie ein Eingabeaufforderungsfenster, wechseln in den Ordner C:\PHP und führen dort den Befehl php –c C:\PHP –info aus. PHP listet daraufhin alle Einstellungen und Konfigurationsdaten auf, wie in Abbildung 1.2 zu sehen.

Abbildung 1.2 Ausgabe nach erfolgreicher Installation von PHP

Hinweis

Wenn Sie eine Fehlermeldung über eine ungültige Side-by-Side-Konfiguration erhalten, fehlen auf Ihrem System die zur PHP-Version passenden Laufzeitkomponenten der Visual C++-Bibliotheken. In diesem Fall laden Sie das Microsoft Visual C++ 2008 SP1 Redistributable Package (x86) von MSDN (http://msdn.microsoft.com/de-at/visualc/default.aspx) und installieren Sie es auf Ihrem System.

Verfügbare PHP-Module

Damit ist die Installation von PHP abgeschlossen. Die auf http://windows.php.net/ bereitgestellten, vorkompilierten PHP-Installationsdateien enthalten alle Standardmodule und einige optionale Erweiterungen. Sie können bei Ihrer Installation die Liste der einkompilierten Module überprüfen, indem Sie in einem Eingabeaufforderungsfenster im Ordner C:\PHP den Befehl php –m aufrufen.

Weitere Module, die dynamisch beim Start von PHP nachgeladen werden können, finden Sie im Ordner C:\PHP\ext. Um diese Module zu aktivieren, müssen sie per Konfiguration in der php.ini-Datei geladen und aktiviert werden. Im Buch wird an gegebener Stelle auf die notwendige Konfiguration der dynamischen Module hingewiesen.

Konfigurieren von PHP in IIS

Nachdem PHP auf dem Rechner installiert ist, muss als Nächstes der IIS Webserver für die Verwendung von PHP konfiguriert werden. PHP wird dabei als ein Handler in IIS konfiguriert. Die modulare Struktur von IIS erlaubt es, für verschiedene Inhalte verschiedene Programme – die Handler – aufzurufen, die in Folge die eingehende HTTP-Anfrage bearbeiten[1]. In der IIS-Basisinstallation sind drei Handler installiert: Neben den speziellen Handlern für die HTTP-Methoden OPTIONS und TRACE gibt es den StaticFile Handler, dessen einzige Aufgabe es ist, eine Datei, die lokal auf dem Server vorhanden ist, unverändert als Antwort auszuliefern.

Mit der Konfiguration von PHP als Handler werden alle Dateien, die auf *.php enden, nicht mehr unmittelbar und unverändert ausgeliefert, sondern vom PHP-Interpreter ausgeführt und das Resultat an den Browser zurück gesendet.

Hier wird vorerst nur die minimal notwendige Konfiguration beschrieben, um PHP-Programme ausführen zu können. Eine ausführliche Beschreibung wichtiger Konfigurationen, insbesondere zu Leistung und Sicherheit, finden Sie in Kapitel 3.

Konfigurieren mit IIS-Manager

Im Folgenden wird die Konfiguration von PHP mithilfe von IIS-Manager beschrieben.

Starten Sie IIS-Manager. Sie können IIS-Manager über den Server-Manager unter Server-Manager/ Rollen/Webserver (IIS)/Internetinformationsdienste (IIS)-Manager aufrufen oder über das Startmenü im Textfeld Programme/Dateien durchsuchen durch Eingabe von inetmgr aufrufen.

Öffnen Sie auf der Ebene des Servers die Handlerzuordnungen wie in Abbildung 1.3 zu sehen.

Abbildung 1.3 Auswahl der Handlerzuordnungen in IIS-Manager

Wählen Sie in der rechten Spalte die Aktion Modulzuordnung hinzufügen aus.

Setzen Sie die Werte wie in Abbildung 1.4 gezeigt: Der Anforderungspfad soll alle Dateien umfassen, die die Endung *.php haben, als Modul wird das FastCgiModule verwendet und als Ausführbare Datei setzen Sie php-cgi.exe. Der Name kann beliebig gewählt werden.

Abbildung 1.4 Modulzuordnung von PHP in IIS

Klicken Sie auf die Schaltfläche Einschränkungen...

Aktivieren Sie auf der Registerkarte Zuordnung das Kontrollkästchen Handler nur bei folgender Zuordnung aufrufen und wählen Sie die Option Datei aus.

Auf der Registerkarte Verben können Sie optional noch Einschränkungen zu den HTTP-Methoden der Zuordnung setzen (zum Beispiel Einschränken auf die Methoden HEAD, GET, POST).

Schließen Sie das Dialogfeld Einschränkungen mit OK.

Bestätigen Sie Ihre Eingabe mit OK.

Bestätigen Sie die Modulzuordnung mit Ja, um PHP als FastCGI-Anwendung ausführen zu können.

Erstellen Sie im Stammordner des Webservers C:\inetpub\wwwroot\ eine Datei phpinfo.php mit folgendem Inhalt:

<?php phpinfo(); ?>

Starten Sie einen Webbrowser und öffnen Sie die Adresse http://localhost/phpinfo.php. Die Webseite enthält die phpinfo()-Informationen mit den aktuellen PHP-Einstellungen, wie in Abbildung 1.5 zu sehen.

Hinweis

Sollten Sie statt der phpinfo()-Seite einen Serverfehler 500 – Interner Serverfehler bekommen, gehen Sie zur Fehlersuche wie in Kapitel 8 beschrieben vor.

Abbildung 1.5 Ausgabe von phpinfo() nach erfolgreichem Einrichten von PHP

Konfigurieren von der Befehlszeile aus

Für die Konfiguration von der Befehlszeile aus wird das neue IIS7-Befehlszeilenprogramm appcmd verwendet. Es befindet sich im Ordner C:\Windows\System32\inetsrv und ist standardmäßig nicht im Befehlspfad der Eingabeaufforderung enthalten. Zum Ausführen des Programms geben Sie entweder den vollständigen Programmpfad an oder fügen Sie den Pfad zum PATH der Eingabeaufforderung hinzu.

Starten Sie ein Eingabeaufforderungsfenster mit Administratorrechten.

Für die Konfiguration des FastCGI-Anwendungspools führen Sie folgenden Befehl aus:

appcmd set config /section:system.webServer/fastCGI /+[fullPath='C:\PHP\php-cgi.exe']

Um die Handlerzuordnung zu konfigurieren, führen Sie folgenden Befehl aus:

appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',
modules='FastCgiModule',scriptProcessor='C:\PHP\php-
cgi.exe',verb='*',path='*.php',resourceType='File']

Wichtig

Achten Sie darauf, die Konfigurationsparameter ohne Leerzeichen einzugeben, auch wenn sie hier im Buch einen Zeilenumbruch enthalten.

Erzeugen Sie im Stammordner des Webservers C:\inetpub\wwwroot\ eine Datei phpinfo.php mit folgendem Inhalt:

<?php phpinfo(); ?>

Starten Sie einen Webbrowser und öffnen Sie die Adresse http://localhost/phpinfo.php. Sie sehen nun die phpinfo()-Seite mit den aktuellen PHP-Einstellungen.

Einrichten mit dem Webplattform-Installer

Eine alternative Möglichkeit zu den bisher gezeigten Wegen, PHP und IIS als Arbeitsumgebung einzurichten, ist die Nutzung von Microsofts Webplattform-Installer (Web PI). Web PI bündelt viele der manuellen Schritte in einen vollautomatischen Installationsvorgang. Zudem bietet Web PI mit der Windows Web App Galery das automatische Installieren einer Vielzahl von unterstützten Applikationen an, wie zum Beispiel die Blogsoftware WordPress oder das Content Management System Joomla!. Die Microsoft Webplattform ist damit ideal geeignet, um rasch und problemlos mit PHP unter Windows zu starten.

Im Folgenden wird die Installation auf einem Windows 7 Ultimate-Betriebssystem beschrieben. Web PI kann aber auch mit Windows Vista, Windows XP SP2+, Windows Server 2003 SP1+ oder Windows Server 2008 verwendet werden. Die Schritte sind dabei ähnlich und sollten auch auf den anderen Systemen einfach nachvollzogen werden können.

Einrichten des Webplattform-Installer

Um den Webplattform-Installer einzurichten, gehen Sie wie folgt vor:

Öffnen Sie die Webseite http://www.microsoft.com/web/Downloads/platform.aspx.

Laden Sie den Webplattform-Installer herunter und speichern Sie die Installationsdatei wpilauncher.exe lokal ab. Die im Buch verwendete Version des Web PI ist Version 2.0 vom 24. September 2009.

Führen Sie die Installationsdatei wpilauncher.exe aus Schritt 2 aus. Sollten Sie nicht als Administrator eingeloggt sein, bestätigen Sie den Dialog der Benutzerkontensteuerung mit Ja, um das Ausführen der Installation zuzulassen.

Nach erfolgreicher Installation öffnet sich das Startfenster des Webplattform-Installer.

Einrichten von IIS und PHP

Mit dem eingerichteten Webplattform-Installer können Sie nun den Webserver einrichten:

Starten Sie den Microsoft Webplattform-Installer.

Klicken Sie im Bereich Webplattform/Webserver auf den Link Klicken Sie, um die empfohlenen Produkte auszuwählen.

Wählen Sie Webplattform/Webserver/Anpassen aus. Aktivieren Sie die Option CGI, wie in Abbildung 1.6 zu sehen.

Abbildung 1.6 Auswahl der CGI-Option im Webplattform-Installer

Klicken Sie den Link Zurückkehren zu Webplattform an.

Wählen Sie Webplattform/Frameworks und Laufzeiten/Anpassen aus.

Im Dialogfeld aktivieren Sie die Option PHP. Zum Zeitpunkt des Buchdrucks wird per Web PI die PHP-Version 5.2.13 installiert.

Klicken Sie auf die Schaltfläche Installieren.

Im neu erscheinenden Dialogfeld Webplattforminstallation klicken Sie auf die Schaltfläche Ich stimme zu.

Der Webplattform-Installer beginnt nun mit dem Herunterladen und der Installation aller ausgewählten und zusätzlich notwendigen Komponenten. Das kann einige Minuten dauern.

Nach erfolgreicher Installation klicken Sie auf die Schaltfläche Fertig stellen.

Schließen Sie den Webplattform-Installer durch Klicken auf die Schaltfläche Beenden.

Starten Sie einen Webbrowser und öffnen Sie die Webseite http://localhost/. Sie sollten nun die Begrüßungswebseite des IIS sehen.

Überprüfen der PHP-Installation

Um die erfolgreiche Installation von PHP zu überprüfen, gehen Sie wie folgt vor:

Erzeugen Sie im Stammordner des Webservers C:\inetpub\wwwroot\ eine Datei phpinfo.php mit folgendem Inhalt:

<?php phpinfo(); ?>

Hinweis

Sollten Sie keine Schreibrechte im angegebenen Ordner haben, dann öffnen Sie den Windows Explorer, wählen Sie den Ordner C:\inetpub\wwwroot an, rufen Sie den Befehl Eigenschaften/Sicherheit/Bearbeiten des Kontextmenüs auf. Im erscheinenden Dialogfeld können Sie für Ihr verwendetes Benutzerkonto die notwendigen Schreib- und Zugriffsrechte freigeben.

Starten Sie einen Webbrowser und öffnen Sie die Adresse http://localhost/phpinfo.php. Die Webseite enthält die phpinfo()-Informationen mit den aktuellen PHP-Einstellungen, wie in Abbildung 1.7 zu sehen.

Abbildung 1.7 Ausgabe von phpinfo() nach erfolgreichem Einrichten über den Webplattform-Installer

Sichern der Konfiguration

Nach erfolgreicher Installation sollten Sie unbedingt eine Datensicherung der Serverkonfiguration vornehmen. Die Konfigurationsdaten der IIS befinden sich im Ordner C:\Windows\System32\inetsrv\config. Die Konfiguration ist auf drei Dateien aufgeteilt: applicationHost.config, administration.config und redirection.config.

Sie können entweder den gesamten Ordner manuell sichern oder alternativ mit appcmd über die Befehlszeile eine Sicherungskopie aller wesentlichen Konfigurationsdateien erstellen:

appcmd add backup "MeinBackup"

Dieser Befehl erstellt eine Sicherungskopie der aktuellen Konfiguration im Verzeichnis C:\Windows\ System32\inetsrv\backup\MeinBackup.

Hinweis

Unter Windows 7 müssen Sie appcmd in einer Eingabeaufforderung mit erhöhten Rechten ausführen. Gehen Sie dazu zu Start/Alle Programme/Accessories/Command Prompt und führen Sie den Befehl Als Administrator ausführen des Kontextmenüs aus.

Sie sollten nach jeder Änderung der Konfiguration, insbesondere nach Installation neuer Module und Komponenten eine Sicherungskopie der aktuellen Konfiguration erstellen. So können Sie notfalls die Konfiguration auf einen definierten Zustand zurücksetzen.

Eine erste Beispielapplikation

Nachdem Sie den Webserver IIS und PHP wie beschrieben eingerichtet haben, können Sie damit beginnen, PHP-Applikationen zu schreiben und zu verwenden. Bevor in den nachfolgenden Kapiteln auf fortgeschrittene Konfigurationsmöglichkeiten eingegangen wird, soll hier eine erste Beispielapplikation aufgeführt werden. Sie zeigt, dass in der Basiskonfiguration PHP-Features wie Formulare und Sessions, wie erwartet funktionieren und eingesetzt werden können.

Es handelt sich um eine einfache PHP-Applikation zum Erraten einer zufälligen Zahl zwischen 1 und 100. Abbildung 1.8 zeigt die Startseite der PHP-Applikation. Das Programm ist in Listing 1.1 zu sehen. Am Anfang wird die Session gestartet. Ist noch keine Zufallszahl gesetzt, wird diese zufällig erzeugt und in der Sessionvariable $_SESSION[‘zahl’] gespeichert. Hat der Benutzer eine Zahl eingegeben (Variable $_POST[‘geraten’]), wird diese mit der zu erratenden Zahl verglichen und eine entsprechende Rückmeldung ausgegeben. Das Spiel endet mit dem Erraten der Zahl. Die Funktion starteSpiel() wird dann erneut aufgerufen, um ein neues Spiel zu starten.

<?php session_start(); ?>
<html>
<head><title>Zahlen raten</title></head>
<body>
<?php
/* Zufallszahl erzeugen und Hilfstext ausgeben */
function starteSpiel()
{
    $_SESSION['zahl'] = rand(1, 100);
    echo "<p>Erraten Sie die Zahl! Sie liegt zwischen 1 und 100.</p>";
}

/* Erster Aufruf? -> Spiel starten */
if (!isset($_SESSION['zahl'])) {
    starteSpiel();
}

/* Rateversuch? */
elseif (isset($_POST['geraten']) && is_numeric($_POST['geraten'])) {
    if ($_SESSION['zahl'] == $_POST['geraten']) {
        echo "<p>Gratulation! Sie haben die Zahl erraten.</p>",
             "<p>Haben Sie Lust auf ein neues Spiel?</p>";
        starteSpiel();
    }
    elseif ($_SESSION['zahl'] < $_POST['geraten']) {
        echo "<p>Leider falsch! Die gesuchte Zahl ist kleiner.<br />",
             "Versuchen Sie es erneut.</p>";
    }
    else {
        echo "<p>Leider falsch! Die gesuchte Zahl ist größer.<br />",
             "Versuchen Sie es erneut.</p>";
    }
}

/* Ungültige oder fehlende Eingabe */
else {
    echo "<p>Bitte geben Sie eine Zahl ein.",
         "Die zu erratende Zahl liegt zwischen 1 und 100.</p>";
}
?>
<form action="" method="post">
    <p>Zahl: <input name="geraten" /></p>
    <p><input type="submit" value="Zahl raten"></p>
</form>
</body>
</html>

Listing 1.1 PHP-Beispielapplikation: Erraten einer Zahl zwischen 1 und 100

Abbildung 1.8 PHP-Beispielapplikation: Erraten einer Zahl zwischen 1 und 100 – Startseite

Remotezugriff

Windows Server 2008 R2 und Windows 7 haben beide standardmäßig die Windows-Firewall aktiviert. Die Windows-Firewall dient dazu, Zugriffe von außen auf am Computer laufende Dienste zu blockieren oder durch Definition entsprechender Regeln zuzulassen. Die Windows-Firewall übernimmt eine wichtige Schutzfunktion vor ungewollten Zugriffen. Wenn Sie Zugriffe auf IIS von außen zulassen wollen oder diese Zugriffe unterbinden wollen, können Sie diese Einstellungen unmittelbar über die Windows-Firewall tätigen. Während im Produktivbetrieb der Remotezugriff erwünscht ist, ist dieser im eigenen Arbeitsbereich meist nicht erwünscht.

Die Windows-Firewall stellt für IIS bereits vordefinierte Regeln zur Verfügung. Um den Remotezugriff zu steuern, gehen Sie wie folgt vor (Schritte gelten für Windows 7 und Windows Server 2008 R2):

Öffnen Sie die Windows-Firewall-Einstellungen mit Start/Systemsteuerung/System und Sicherheit/ Windows-Firewall/Ein Programm oder Feature durch die Windows-Firewall zulassen.

Falls die Schaltfläche Einstellungen ändern aktiviert werden kann, klicken Sie darauf und führen die notwendigen Schritte durch, um die Berechtigung zum Ändern der Einstellungen zu erhalten.

Aktivieren oder deaktivieren Sie die Option WWW-Dienste (HTTP) entsprechend Ihren Anforderungen, wie in Abbildung 1.9 zu sehen. Wenn Sie Remotezugriffe zulassen wollen, wählen Sie noch zusätzlich aus, ob nur Rechner aus demselben Domänennetzwerk Zugriff haben sollen, Zugriff nur über als privat markierte Netzwerke möglich sein soll, oder der Zugriff generell erlaubt werden soll. (Spalte Öffentlich). (Diese Einstellung setzt voraus, dass Ihre Netzwerke dem entsprechenden Profil zugeteilt sind.)

Abbildung 1.9 Aktivieren des Remotezugriffs auf IIS unter Windows 7

Bestätigen Sie Ihre Änderungen mit OK.

Zusammenfassung

Nach dem Einrichten der Arbeitsumgebung können Sie erste Schritte mit PHP und IIS unternehmen. Die in diesem Kapitel erfolgte Installation enthält nur die Basiskomponenten, die standardmäßig installiert werden. IIS bietet noch eine Vielzahl weiterer Module und Funktionen. Einige davon werden in den folgenden Kapiteln behandelt werden.

Von den drei vorgestellten Arten PHP und IIS einzurichten, ist der Webplattform-Installer die einfachste Variante, da sie den Vorgang weitestgehend automatisiert. Der Webplattform-Installer eignet sich insbesondere, um beispielsweise schnell eine Arbeitsumgebung zur Entwicklung einzurichten und erste Schritte zu unternehmen. Die beiden anderen Einrichtungsarten sind mit mehr manuellen Schritten verbunden, erlauben dafür im Gegenzug aber eine feinere Granularität und Kontrolle der Einrichtung.

Bevor nun auf erweiterte Konfigurationsmöglichkeiten und zusätzliche Module eingegangen wird, soll in Kapitel 2 ein Überblick über die IIS-Architektur und den internen Ablauf einer HTTP-Anforderung gegeben werden.

[1] Handler sind nur ein Glied in der IIS-Befehlskette zur Abarbeitung einer eingehenden HTTP-Anforderung. Eine genauere Darstellung der vollständigen Kette finden Sie in Kapitel 2.

Kapitel 2. IIS-Architektur

In diesem Kapitel:

„Sites“

„Anwendungen“

„Virtuelles Verzeichnis“

„Ablauf einer HTTP-Anforderung“

„Module“

„Anwendungspools“

„FastCGI“

„Zusammenfassung“

Mit IIS 7 wurde die IIS-Architektur weiter modularisiert und in vielen Punkten die Sicherheit verbessert. Wenn Sie von anderen Webservern umsteigen, ist es deshalb wichtig, einen Überblick darüber zu bekommen, wie eine Anforderung von IIS abgearbeitet wird und wie Inhalte der Anforderung zugeordnet werden.

Wie auch mit anderen Webservern können mit IIS mehrere Websites am selben Server – mit derselben IISInstanz – betrieben werden. IIS bedient sich dazu dreier Bausteine, um einerseits die Wartung und den Betrieb zu vereinfachen, andererseits eine abgestufte und granulare Konfiguration zu ermöglichen, die in Folge wesentlich zur Sicherheit des Servers beiträgt. Die drei Bausteine sind: Site, Anwendung und Virtuelles Verzeichnis. Aufbauend auf der Beschreibung dieser Bausteine wird danach der Ablauf einer HTTP-Anforderung, sowie Anwendungspools und die Einbindung von FastCGI beschrieben. Zusammen ergibt sich ein Überblick über die Funktionsweise von IIS, der Ihnen das Planen und Entwickeln von PHP-Anwendungen für IIS erleichtert.

Sites

Eine Site in IIS 7 ist ein Bereich des Webservers, der seine eigenen Anwendungen und virtuelle Verzeichnisse hat und über eigene Bindungen verfügt. Mit Sites ist es möglich, mehrere Websites, die beispielsweise an unterschiedlichen Domänennamen, IP-Adressen oder Ports gebunden sind, mit einer einzigen Instanz von IIS zu betreiben. Sites erlauben also das virtuelle Hosting von Websites.

Hinweis

Für Apache-Administratoren: Sites sind mit der <VirtualHost> Konfigurationsdirektive vergleichbar, IIS geht aber noch einen Schritt weiter: Auch grundlegende Eigenschaften des Webservers lassen sich von Site zu Site ändern, beispielsweise die verfügbaren Module. Weitere Details zur Konfiguration finden Sie in Kapitel 3.

Anlegen einer neuen Site

Sie können Sites entweder mit IIS-Manager oder von der Befehlszeile aus per einrichten.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!