Tutorial: Win7 mit IIS7, PHP und MySQL
Posted by Dr.Bock (11.11.2009)Nov 11
Hallo Leute!
Ich habe gestern einige Zeit damit verbracht den IIS7-Server unter Windows7 mit PHP und MySQL zum laufen zu bekommen. Da es nicht ganz so einfach war, wie man meinen könnte, dachte ich mir, ich lasse euch mal an meinen Erfahrungen teilhaben und schreibe ein Tutorial.
So bekommt Ihr den IIS7 unter Windows7 mit PHP- und MySQL-Unterstützung zum laufen:
Schritt 1: Installation des IIS7
Um den IIS7 zu installieren, klickt in der Windows-Systemsteuerung auf auf “Programme” und im anschließend erscheinenden Fenster auf “Windows-Funktionen aktivieren oder deaktivieren”.
Im nun erschienenen Fenster sucht ihr nach “Internetinformationsdienste” und aktiviert die Checkbox.
Aktiviert die “Webverwaltungstools” und die “WWW-Dienste”. Unter letzterem aktiviert die Punkte “ISAPI-Erweiterungen” und “ISAPI Filter”.
Klickt nun auf OK und wartet die Installation des IIS7 ab. Wenn die Installation abgeschlossen ist, könnt Ihr die Systemsteuerung wieder schließen.
Der IIS ist nun installiert. Zum Testen könnt ihr im Browser einfach http://localhost eingeben. Die lokale Startseite des IIS müsste erscheinen.
Der nächste Schritt: PHP installieren
Die aktuelle PHP-Distribution bekommt ihr auf der Offiziellen Downloadseite. Auch wenn in anderen Tutorials davon abgeraten wird, könnt ihr der Einfachheit halber ruhig den Windows Installer runterladen und verwenden. Nachbessern müsst ihr hinterher so oder so. Auch lasst euch nicht davon abschrecken, falls ihr ein 64bit-Windows verwendet, dass es sich bei PHP um eine 32bit-Distribution handelt.
(Es gibt eine inoffizielle 64bit-Distribution von PHP. Wer diese testen will, findet sie hier: http://www.fusionxlan.com/PHPx64.php)
Führt den Installer nun aus und installiert PHP beispielsweise nach “C:\PHP”. Bei Webserver wählt ihr das “IIS ISAPI Module”.
Wählt “Custom Install” und fügt am die gewünschten Erweiterungen (Extensions) bei. Nützlich sind auf jeden Fall (auch falls ihr hinterher Tools wie phpmyadmin benutzen wollt) bzip2, curl, gd2, mcrypt, mysql, mysqli, tidy, zip. Eine Auswahl aller Extensions direkt bei der Installation kann unter Umständen zu Problemen führen, falls euer Rechner diese nicht unterstützt. Eine nachträgliche Installation der Extension ist aber über den Installer weiterhin möglich.
Schließt die Installation nun ab.
Öffnet nun den “Internetinformationsdienste (IIS)-Manager”. Diesen findet ihr in der Systemsteuerung unter “System und Sicherheit -> Verwaltung.
Öffnet die “Handlerzuordnung”:
- Klickt auf “Skriptzuordnung hinzufügen…”.
- Tragt bei “Anforderungspfad” *.php ein.
- Bei “Ausführbare Datei” wählt ihr die php5isapi.dll aus dem PHP-Installationsverzeichnis aus.
- Unter “Einschränkungen” und dann “Zugriff” wählt “Script”.
- Bei “Name” könnt ihr beispielsweise “PHP” eintragen.
Klickt auf OK und im nächsten Dialog auf “Ja”. Vergewissert euch, dass der Zustand der nun eingetragenen Skriptzuordnung auf “Aktiviert steht”.
Geht nun zurück und wählt über das Icon “ISAPI- und CGI-Einschränkungen”. Hier sollte bei der php5isapi.dll ein “Zugelassen” stehen. Normalerweise passiert dies automatisch. (Ansonsten hilft ein Rechtsklick und “Zulassen” bzw. ein Hinzufügen des Pfades zur php5isapi.dll.)
Macht einen Rechtklick auf den Eintrag und wählt “Featureeinstellungen bearbeiten”. Wählt beide Checkboxen ab.
Geht wieder zurück in den IIS-Manager und wählt “ISAPI Filter” aus. Fügt hier einen Filter für die php5isapi.dll hinzu.
Solltet ihr ein 64bit System einsetzen, ist noch folgender Schritt notwendig:
- Klickt im IIS-Manager rechts auf “Anwendungspools anzeigen”.
- Klickt auf den Anwendungspool der genutzt werden soll auf Erweiterte Einstellungen” und setzt den Wert bei “32-Bit-Anwendungen erlauben” auf “True”.
Das nun folgende sollte durch die Benutzung des PHP-Installers zwar breites erledigt sein, aber eine Überprüfung schadet nicht.
Geht in “Systemsteuerung -> System und Sicherheit” -> “System”. Dort links auf “Erweiterte Systemeinstellungen” und im erscheinenden Dialog auf “Umgebungsvariablen”. In der Systemvariable “Path” sollte auch der Pfad zum PHP-Installationsverzeichnis zu finden sein. Falls nicht, fügt diesen Pfad am Ende der Variable hinzu.
Jetzt muss der Pfad zur php.ini in die Registry eingetragen werden. Dies ist wichtig, damit die Datei nicht umständlich immer ins Windows-Verzeichnis kopiert werden muss.
- Öffnet die Registry (Ausführen -> “regedit”)
- Geht in das Verzeichnis:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\PHP] - Fügt dort “IniFilePath” = “C:\PHP” ein. (bzw. euer Installationsverzeichnis.
Letzter Schritt: MySQL installieren
Ladet euch den MySQL-Installer von der offiziellen Website herunter. Hier könnt ihr zwischen einer 32bit und einer 64bit-Version wählen.
Installiert MySQL. Da die Schritte beim Installieren selbsterklärend sind, spare ich mir hier ein ausführliches Tutorial.
Startet den Computer nun neu. Der IIS7 mit PHP und mysql ist nun betriebsbereit.
Natürlich kann und muss sich jeder selber noch die PHP-Konfigurationsdatei (php.ini) an seine eigenen Bedürfnisse anpassen, aber das würde den Rahmen dieses Tutorials sprengen.
Nützliches und Fehlerbehebung
Standarddokument festelegen
Damit beim Aufruf eines Verzeichnisses auch direkt die “index.php” aufgerufen wird, muss diese noch als Standarddokument eingetragen werden.
Geht dazu wieder in den IIS-Manager, wählt dort das Icon “Standarddokument” fügt dort die “index.php” hinzu.
Die mysql-Extension ist nicht aktiviert
Es kann unter Umständen passieren, dass die mysql-Extension von PHP nicht automatisch aktiviert wird. Zum Aktivieren öffnet die php.ini im PHP-Installationsverzeichnis. Fügt dieser Datei die Zeile
extension=php_mysql.dll
hinzu und speicher sie wieder ab. Jetzt muss der IIS einmal neu gestartet werden.











hallo, ich hab eben deine erklärung hier gelesen und ich möchte dich jetzt mal fragen, wo der unterschied zwischen den isapi-modulen und der cgi-module besteht?
ich hab an andere stelle ein installation von php mit den cgi-modulen gefunden und getestet… mit erfolg.
diese art hat mir besser gefallen, weil wesentlich einfacher.
wenn du mir jetzt sagen kannst, warum du die isapi-module nimmst, wär ich dir dankbar! möchte dazulernen!
gruß uli
Beides (also CGI oder ISAPI) geht natürlich und macht auf den ersten Blick keinen Unterschied. Die ISAPI-Variante ist allerdings wesentlich performanter und ressourcenschonender als die CGI-Variante. Warum das so ist lässt sich an diversen anderen Stellen im Netz nachlesen, würde jetzt ein wenig den Rahmen sprengen
.
CGI ist ein mittlerweile sehr betagter Standard. FastCGI eine auch schon betagte Weiterentwicklung, die 20-25x schneller als CGI sein soll/kann. ISAPI soll auf IIS noch einmal schneller als FastCGI sein.
Zu erwähnen ist allerdings noch, dass es Meinungen gibt wonach der produktive PHP-Betrieb per FastCGI stabiler als per ISAPI laufen soll. Diese Erfahrung konnte ich noch nicht machen, ich nutze den IIS allerdings auch nur zu Hause als Testumgebung.