Was sind die technischen Unterschiede zwischen den threadsicheren und nicht-threadsicheren PHP-Windows-Installationspaketen?

Lesezeit: 6 Minuten

Benutzer-Avatar
Chuck Le Butt

Ich bin gerade dabei, PHP für eine Apache/Windows-basierte Entwicklungsumgebung zu installieren, aber es scheint, dass ich gleich an der ersten Hürde scheitere: Die Auswahl des richtigen Pakets für die Installation.

PHP ist in nicht weniger als verfügbar vier Aromen:

  • VC9 x86 Nicht Thread-sicher
  • VC9 x86 Threadsicher
  • VC6 x86 Nicht Thread-sicher
  • VC6 x86 Threadsicher

Was ist der Unterschied zwischen diesen Versionen in a praktisch Sinn?

Als ob dies nicht kompliziert genug wäre, ist Version 5.3 von PHP nur in VC9 verfügbar (wobei 5.2 mit den VC6-Paketen geliefert wird). Und doch sollten Sie laut der PHP-Site nicht Verwenden Sie VC9 mit Apache … Warum bekommt Apache also die ältere Version?

Es ist alles sehr verwirrend und ich hätte gerne etwas Hilfe beim Verständnis der Auswahlmöglichkeiten.

  • Bitte führen Sie alle Meta-Diskussionen über die Vorzüge dieser Frage zu Meta. Speziell: hier.

    – Georg Stocker

    21. Mai 2013 um 12:25 Uhr


Benutzer-Avatar
Chuck Le Butt

Nach vielen Recherchen habe ich es geschafft, meine eigenen Antworten auf diese Frage zu finden.

In ihrer einfachsten Form lautet die Antwort: Welche PHP-Version Sie installieren sollten, hängt davon ab, welchen Webserver Sie verwenden.

Hier ist eine tiefere Erklärung der Begriffe, die bei der Auswahl einer PHP-Version verwendet werden, basierend auf dem, was ich gelernt habe:


VC6 gegen VC9

Erstens werden verschiedene Versionen von Apache für Windows mit unterschiedlichen Compilern kompiliert. Zum Beispiel die Versionen auf Apache.org wurden entwickelt, um mit kompiliert zu werden Microsoft Visual C++ 6auch bekannt als VC6. Dieser Compiler ist sehr beliebt, aber auch sehr alt. (Es stammt aus dem Jahr 1998.)

Es gibt verschiedene Versionen von Apache, die für verschiedene Compiler erstellt wurden. Zum Beispiel die zum Download verfügbaren Versionen von ApacheLounge.com sind so konzipiert, dass sie mit dem beliebten und viel neueren Compiler kompiliert werden können, Microsoft Visual C++ 9 ab 2008. Auch bekannt als VC9.

(Hinweis: Diese beiden Compiler sind die beiden beliebtesten Optionen. Obwohl es also möglich ist, eine mit VC7, VC8 usw. kompilierte Version von Apache zu haben, ist es unwahrscheinlich, dass Sie auf sie stoßen werden.)

Die Verwendung dieses neueren Compilers (VC9) ist wichtig, da die neuesten Versionen von PHP nur in VC9-Form vertrieben werden (obwohl ältere Versionen noch für VC6 verfügbar sind).

Darüber hinaus gibt es laut ApacheLounge zahlreiche Verbesserungen bei der Verwendung einer mit VC9 kompilierten Version von Apache, „in Bereichen wie Performance, Speicherverwaltung und Stabilität“.

Als ob das nicht genug wäre, haben die Entwickler von PHP auf ihrer Seite folgendes Statement abgegeben:

Windows-Benutzer: Bitte beachten Sie, dass wir keine Builds mehr bereitstellen, die mit Visual Studio C++ 6 (VC6) erstellt wurden. Es ist unmöglich, mit diesem nicht gewarteten Compiler eine qualitativ hochwertige und sichere Version von PHP für Windows aufrechtzuerhalten.

Wir empfehlen die von ApacheLounge bereitgestellten VC9-Apache-Builds.

Alle PHP-Benutzer sollten beachten, dass die PHP 5.2-Reihe NICHT mehr unterstützt wird. Allen Benutzern wird dringend empfohlen, auf PHP 5.3.6 zu aktualisieren.

Alles in allem ist dies ein äußerst überzeugendes Argument, VC9-Versionen von Apache und PHP zu verwenden, wenn Sie mich fragen.

Wenn Sie also eine Version von Apache aus dem verwenden offizielle Apache-Seite, wird es mit VC6 kompiliert, und daher sollten Sie die ältere Version von PHP für diesen Compiler verwenden. Wenn Sie eine Version von Apache verwenden, die mit VC9 kompiliert wurde, wie die auf verfügbare ApacheLounge.comkönnen Sie die neueste Version von PHP (für VC9) verwenden.

Für mich, der eine lokale Entwicklungsumgebung betreibt, wäre es vorzuziehen, die neueste Version von PHP zu haben, daher ist eine VC9-Version von Apache erforderlich, damit ich die VC9-Version von PHP verwenden kann.

Threadsicher vs. nicht Threadsicher

Auch hier kommt es auf Ihren Webserver an. Standardmäßig wird Apache unter Windows als installiert Modulaber es kann so geändert werden, dass es ausgeführt wird als FastCGI. Es gibt viele Unterschiede zwischen den beiden, aber im Wesentlichen ist FastCGI moderner, schneller, robuster und ressourcenhungriger. Für jemanden, der eine lokale Entwicklungsumgebung betreibt, mag FastCGI übertrieben sein, aber anscheinend laufen viele Hosting-Unternehmen aus den von mir genannten Gründen als FastCGI, also gibt es gute Argumente dafür, dies in einer Entwicklungsumgebung zu tun.

Wenn Sie Apache (oder IIS) als FastCGI (oder CGI) ausführen, möchten Sie die Nicht Thread-sicher Version von PHP. Wenn Sie Apache standardmäßig (als Modul) ausführen, möchten Sie das traditionellere Threadsicher Ausführung.

Bitte beachten Sie: Dies alles gilt nur für Windows-Benutzer.


Ich werde mich nicht mit FastCGI beschäftigen (es sei denn, jemand überzeugt mich vom Gegenteil), also für mich möchte ich das VC9 Thread-sichere Version von PHP.

Und das ist es.

Weiterlesen:

  • Was ist, wenn wir eine V6-Version brauchen, aber es gibt nur V9-Versionen? Beispielsweise scheint es keine V6-Version von PHP 5.3.5 zu geben windows.php.net/downloads/releases/archives . Sind wir dann gezwungen, selbst zu kompilieren? Oder gibt es dafür schon eine eigene Website?

    – Schrittmacher

    3. April 2015 um 16:49 Uhr

  • Ja, Sie müssen es selbst kompilieren, und das wird sehr wahrscheinlich fehlschlagen. Sie müssen auch alle Abhängigkeitsbibliotheken kompilieren. Übrigens, warum um alles in der Welt würdest du VC6 brauchen? Verwendung einer toten Compiler-Version, um eine tote PHP-Version zu kompilieren.

    – Anatol Belski

    26. Mai 2015 um 21:10 Uhr

Ich persönlich verwende einen virtualisierten LAMP-Server. Jeder Hosting-Service, den ich verwende, basiert auf einer Linux-Variante, und es gibt zu viele Unterschiede zwischen WAMP und LAMP. Dann verwende ich einfach den Standard-Tasksel-LAMP-Server für diese Version von Linux.

Mein aktuelles Setup ist im Moment mit VMWare (Fusion auf Mac, Player auf Windows). Ich habe 3 VMs – eine für PHP5.3 mit Ubuntu 10.04 LTS und eine weitere für PHP 5.1 unter Ubuntu 8.04 LTS. (Einer der von mir verwendeten Hosts ist RedHat, der derzeit nur PHP 5.1 unterstützt). Ich habe eine dritte VM für RubyOnRails dev.

Mit anderen Worten, ich versuche, meine Entwicklungsumgebung so nah wie möglich an meine Produktionsumgebung zu bringen. Finden Sie also heraus, welche Version von Apache und PHP sich auf Ihrem Host befindet, und verwenden Sie diese als Leitfaden.

  • @ Pacerier du hast recht, das tut es nicht wirklich. Es war eine meiner ersten Antworten auf StackOverflow, und ich glaube, ich habe versucht zu sagen: “Führen Sie aus, was auch immer Sie für die Produktion verwenden werden”. Es hatte zwei Upvotes, also hat es anscheinend jemandem geholfen, aber ich lösche es gerne.

    – Dan Schläge

    3. April 2015 um 18:16 Uhr

1245890cookie-checkWas sind die technischen Unterschiede zwischen den threadsicheren und nicht-threadsicheren PHP-Windows-Installationspaketen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy