PHP-Installation unter IIS: ISAPI oder CGI?

7

Ich verwende IIS6 unter Windows Server 2k3 und habe derzeit PHP als ISAPI-Modul installiert. Wir sind dabei, unsere Umgebung auf PHP 5.3.0 zu aktualisieren, und deshalb habe ich mich gefragt, ob ich beim ISAPI-Modul bleiben soll oder ob es einen Grund gibt, warum das CGI besser passt.

Wir haben einen Webserver für unser Unternehmen und müssen uns keine Sorgen um die Sicherheit im Zusammenhang mit Shared Hosting machen. Wir haben mehrere Websites, aber alle gehören uns.

Gibt es einen Vorteil bei der Verwendung einer Methode gegenüber der anderen? Ist man sicherer? Ist es einfach eine Frage der Präferenz?

BEARBEITEN: PHP 5.3.0 hat die Unterstützung für ISAPI eingestellt, daher müssen Sie es über FastCGI installieren. Aus dem PHP-Migrationshandbuch :

Die Unterstützung für das ISAPI-Modul wurde eingestellt. Verwenden Sie stattdessen das verbesserte FastCGI-SAPI-Modul.

Jacob Hume
quelle
1
Ich finde es enttäuschend, dass sie die ISAPI-Unterstützung eingestellt haben. Dies bedeutet, dass ich, wenn wir unsere Webserver jemals auf eine neuere Version von PHP migrieren möchten (für die zwei oder drei PHP-Apps, die wir intern ausführen), jetzt eine andere Vermittlungsplattform (nämlich FastCGI) lernen (und damit warten) muss. Daher ist das Problem mit Open Source / Free-Software, es wird wenig darüber nachgedacht, dass diejenigen von uns "nahe genug" "gut genug" sind (dh interne Software).
Mark Henderson
Genau das führte zu dieser Frage: Ich habe normalerweise über ISAPI installiert und ein Upgrade auf PHP 5.3.0 durchgeführt. Ich wusste jedoch nicht, dass sie die ISAPI-Unterstützung zu diesem Zeitpunkt vollständig entfernt hatten. Ich sehe dies jedoch nicht als Problem in der freien Software. Wenn mir die ISAPI-Unterstützung nicht gefallen hat, kann ich sie zurückschreiben. Entwickler haben im Allgemeinen die Möglichkeit, Entscheidungen ohne Rücksicht auf ihre Benutzer zu treffen. nicht nur Open Source-Entwickler.
Jacob Hume
Sehr rücksichtslos von ihnen, die empfohlene Methode zur Installation von PHP auf IIS ohne einen RIESIGEN Hinweis auf das Installationsprogramm wie "Auf der Suche nach ISAPI? Wir haben die Unterstützung eingestellt und sind zu FastCGI gewechselt. Lesen Sie hier darüber "
Carlos Lima
@JacobHume, warum sagst du "Server 2k3" statt einfach "Server 2003"?
Pacerier
@ Pacerier - Es ist nur eine Umgangssprache. Aus pedantischer Sicht sollte die Frage bearbeitet werden, um klarer zu machen. An diesem Punkt sollte wahrscheinlich der Name "Windows Server 2003" ersetzt werden, da dies der formale Name des Produkts ist (ohne den Teil "Edition" des Namens - Da dies jedoch eine IIS-Frage ist, gilt sie für alle Editionen des Produkts. Ich denke nicht, dass es der Frage einen besonderen Wert hinzufügen würde, sie zu bearbeiten.
Evan Anderson

Antworten:

6

Die nicht threadsichere PHP-CGI-Binärdatei für Windows soll Ihnen maximale Stabilität, Kompatibilität und Leistung bieten:

  1. PHP wurde ursprünglich für Multiprozessumgebungen entwickelt und optimiert
  2. Die meisten Erweiterungen wurden unter Berücksichtigung dessen erstellt
  3. In Multithread-Umgebungen tritt kein "Warten" auf

Die Leistung und Stabilität ist jedoch anfällig, wenn die CGI-Binärdatei in Multithread-Umgebungen wie IIS verwendet wird. Daher verwenden die meisten Benutzer die relativ neue FastCGI- Erweiterung, die für IIS 5.1 / IIS 6.0 als Download verfügbar und mit IIS7 gebündelt ist.

In diesem Handbuch wird erläutert, wie Sie PHP CGI mit der FastCGI-Erweiterung von Microsoft installieren und konfigurieren.

Die zweite Möglichkeit besteht darin, sich für PHP ISAPI zu entscheiden. Achten Sie jedoch darauf, (i) Thread-sichere Builds zu verwenden. (Ii) stabile und getestete Erweiterungen zu verwenden. Andernfalls kann PHP ISAPI abstürzen und auch IIS herunterfahren. Eine Randnotiz ist, dass die Profilsicherheit in PHP wie eine Handbremse ist, die immer angezogen ist. Einige sagen sogar, dass es ein Mythos ist.

Update: PHP ISAPI wird nicht mehr ausgeliefert, daher ist die Frage zu ISAPI vs. CGI keine Frage mehr. FastCGI wird empfohlen.

  1. Die FastCGI-Unterstützung ist in moderne Versionen von IIS integriert. Sie müssen sie nur aktivieren.
  2. Das PHP-Installationsprogramm bietet die Möglichkeit, PHP mit FastCGI zu installieren.
  3. Personen, die ZIP-Installationen durchführen möchten, können "PHP Manager for IIS" verwenden, um die PHP-Installation mit IIS zu konfigurieren.
Salman A.
quelle
Hier können Sie auch ein Installationspaket herunterladen, das alle langweiligen Aufgaben für Sie erledigt : windows.php.net/download . Die FastCGI-Version von PHP 5.3.1 lief unter IIS einwandfrei, obwohl sie eine ISAPI-Version ersetzte.
Jarett Millard
@Salman, Sie haben angegeben, dass nicht threadsicher für maximale Stabilität steht, aber verwenden nicht alle threadsichere Versionen? zB funktioniert Apache nicht mit nicht threadsicher, oder?
Pacerier
@ Pacerier Antwort wurde vor mehr als 5 Jahren geschrieben und gilt für IIS6. Es wird jedoch auch heute noch offiziell empfohlen, eine nicht threadsichere Version mit IIS + FastCGI zu verwenden (siehe php.net/manual/en/install.windows.iis7.php ).
Salman A
6

Ich persönlich finde, dass ISAPI für nicht ausgelastete Websites (z. B. durchschnittlich zwischen 0 und 25 Benutzer) einwandfrei funktioniert. Ich habe wenig Nutzen aus der Verwendung von CGI gegenüber ISAPI gezogen.

Wenn Sie jedoch eine geschäftige Website haben oder nichts dagegen haben, ein wenig zu arbeiten, empfehle ich, sich FastCGI anzuschauen, da Sie es jetzt auf Win2003 IIS6 erhalten können. Es läuft unter hoher Last VIEL schneller.

http://www.iis.net/extensions/FastCGI

William Hilsum
quelle
Haben Sie FastCGI persönlich ausprobiert?
Pacerier
@ Pacerier - yep
William Hilsum
Und ist das eine Testplay-Site oder eine wirklich große Site mit vielen gleichzeitigen Besuchern?
Pacerier
5

CGI arbeitet unter IIS im Vergleich zum ISAPI-Modell sehr schlecht (da das Erstellen neuer Prozesse, wie CGI funktioniert, unter Windows NT-Betriebssystemen sehr "teuer" ist). In modernen Versionen von IIS sind viele der "Probleme" von ISAPI (Speicherlecks, das "Recyceln" von Anwendungen usw.) "behoben" und ISAPI-basierte Anwendungen funktionieren im Allgemeinen sehr gut und sind einfach zu verwalten. Alle Gründe, aus denen Sie feststellen, dass CGI-basierte Anwendungen "besser" sind als ISAPI-basierte Anwendungen, wurden wahrscheinlich in einer IIS 4.0- oder IIS 5.0-Ära geschrieben.

Evan Anderson
quelle
Was meinen Sie damit, dass "CGI-basierte Anwendungen" besser "sind als ISAPI-basierte Anwendungen" und wie sind sie genau "besser"?
Pacerier
1
Sie sind es in keinem sinnvollen Sinne. In der Vergangenheit dachten einige Leute, dass sie es waren. Als das ISAPI-Ökosystem "jung" war, gab es viele ISAPI-Anwendungen, die unter Stabilitätsproblemen litten (hauptsächlich, weil sie in Bezug auf Ressourcen "undicht" waren). Einige Leute sahen CGI-basierte Anwendungen als stabiler an als ISAPI-basierte Anwendungen. CGI-basierte Anwendungen, die als neuer Prozess für jede Anforderung gestartet wurden, hatten keine Probleme mit Ressourcenverlusten, die bei einer lang laufenden Anwendung auftreten könnten. Nachdem das ISAPI-Ökosystem gereift ist, sind meiner Meinung nach alle diese wahrgenommenen Vorteile weg.
Evan Anderson