2010-12-27 19 views
26

Die PHP-FPM-Homepage http://php-fpm.org/ besagt, dass es seit PHP 5.3.3 Teil von PHP ist. Nun, ich frage mich, wenn ich die neuesten PHP-Binärdateien von php.net herunterlade, gibt es kein php-fpm darin. Wie bekomme ich es? Ist es sogar für Windows verfügbar?php-fpm für Windows?

Antwort

0

PHP-FPM ist nur für Linux ab sofort verfügbar. Es gibt einige Seiten, die ein Tutorial zur Verfügung stellen, wie php-fpm unter cygwin unter windows ausgeführt werden kann. Sie können diese Anleitungen ausprobieren.

+6

PHP-FPM installiert jetzt ziemlich einfach unter Windows. Auch im Jahr 2011 war Ihre Antwort sichtbar falsch: (1) Wenn es unter Cygwin funktionierte, funktionierte es unter Windows und außerhalb von Linux (2) funktionierte es unter Solaris, FreeBSD, NetBSD, MacOS X, OpenBSD, etc. – Dereckson

3

Mit PHP v5.3.3 wurde die FPM Server-API [SAPI] Unterstützung in PHP integriert. Das heißt, Sie können die Quellcodes von PHP übernehmen und sie mit FPM-SAPI [unter Verwendung der --enable-fpm Konfigurationsparameter] -Support kompilieren und erstellen, statt beispielsweise Apache SAPI [--enable-apx2]. Wie in PHP-Wiki gezeigt, können Sie PHP fast genauso wie in * nix-Systemen erstellen - das heißt, die Konfiguration. Ich schlage vor, dass Sie zuerst die Grundlagen des PHP-Aufbaus in * nix-Systemen erlernen und versuchen, es selbst zu tun [üblich configure, und make install Muster], und dann versuchen, die daraus gewonnene Erfahrung auf Windows-Umgebung aufzubauen .

Zusätzlich zu den Konfigurationsparametern --enable-fpm gibt es zwei weitere Parameter: --with-fpm-user=USERNAME_HERE und --with-fpm-group=USERGROUPNAME_HERE. Diese beiden arbeiten in * nix-Umgebung, sind aber möglicherweise nicht in Windows verfügbar.

Insgesamt bin ich mir ziemlich sicher, dass Sie Ihre eigene PHP-FPM-Server-App unter Windows mit Visual Studio IDE erstellen können. Es gibt keine offiziellen PHP-FPM-Builds zum Zeitpunkt der Erstellung dieses Artikels.

EDIT 1: OK, ich könnte falsch liegen die Möglichkeit PHP-FPM unter Windows zu erstellen, da dieses SAPI libevent Komponente von * nix-Umgebung verwendet. Schätze, Sie müssen mit Cygwin-bundled installation nachallem bleiben.

+0

Anscheinend hat liberent wurde entfernt von 5.3.4 nach den Kommentaren auf [diese Seite] (http://www.php.net/manual/en/install.fpm.install.php) –

25

Hier wie php-fpm Setup unter Windows:

  1. die ZIP-Datei aus http://windows.php.net/download/ zum Download. Die ZIP-Datei sollte VC9 mit der FastCGI-Datei (php-cgi.exe) sein. Laden Sie VC6 nicht herunter, und laden Sie die MSI-Datei nicht herunter, da Sie bereits über IIS-Setup verfügen müssen, um php-fpm zu installieren. Die Zip-Datei enthält die php-cgi.exe, die Sie für php-fpm benötigen. Ich habe eine etwas ältere Version heruntergeladen, php-5.3.10- Win32-VC9-x86.zip, von hier http://windows.php.net/downloads/releases/archives/, weil ich die Version auf meinem Produktionsserver abgleichen wollte.

  2. Entpacken Sie die Datei z. entpacken in C: \ php-5.3.10-Win32-VC9-x86

  3. Bearbeiten Sie die php.ini-Datei nach Bedarf. Was ich tat:

    # nginx security setting 
    cgi.fix_pathinfo=0 
    
    extension_dir = "C:\php-5.3.10-Win32-VC9-x86\ext" 
    

    folgende Module aktivieren, indem sie uncommenting:

    extension=php_curl.dll 
    extension=php_mbstring.dll 
    extension=php_mysqli.dll 
    
  4. Erstellen Sie eine BAT-Datei irgendwo, z.B. Start-php-fcgi.bat in Webserver-Verzeichnis oder im PHP-Verzeichnis:

    @ECHO OFF 
    ECHO Starting PHP FastCGI... 
    set PATH=C:\php-5.3.10-Win32-VC9-x86;%PATH% 
    C:\php-5.3.10-Win32-VC9-x86\php-cgi.exe -b 127.0.0.1:9123 -c C:\php-5.3.10-Win32-VC9-x86\php.ini 
    
  5. Doppel die .bat-Datei klicken php-fpm zu starten. Ein Fenster wird geöffnet und bleibt geöffnet, während es ausgeführt wird. Es ist irgendwie nervig, aber ich habe es noch nicht als Service betrachtet.

  6. Konfigurieren Sie Ihren Webserver. Wenn Sie wollen, es zu benutzen mit nginx, hier eine Config-Probe für 127.0.0.1:9123:

    location ~ \.php$ { 
        fastcgi_pass 127.0.0.1:9123; 
        fastcgi_index index.php; 
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
        include   fastcgi_params; 
    } 
    
+0

Nützliche Informationen, die es zum Laufen bringen, jede Erfahrung in Verwenden Sie es mit Apache und mod_proxy_fcgi –

+37

aber das ist nicht php-fpm, es ist fastcgi – Michelle

+12

php-fpm = php-Fastcgi Prozessmanager – Alan

7

Dereckson Antwort ist ein guter Start. Für Apache 2.4 und höher müssen Sie PHP-FPM jedoch nicht als separaten Dienst ausführen. Sie können mod_fcgid verwenden, um alles innerhalb von Apache zu verarbeiten. Hier

ist eine Beispielkonfiguration:

LoadModule fcgid_module modules/mod_fcgid.so 

FcgidInitialEnv PHPRC "c:/php" 
FcgidInitialEnv PATH "c:/php;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;" 
FcgidInitialEnv SystemRoot "C:/Windows" 
FcgidInitialEnv SystemDrive "C:" 
FcgidInitialEnv TEMP "C:/WINDOWS/Temp" 
FcgidInitialEnv TMP "C:/WINDOWS/Temp" 
FcgidInitialEnv windir "C:/WINDOWS" 
FcgidIOTimeout 64 
FcgidConnectTimeout 16 
FcgidMaxRequestsPerProcess 500 

<Files ~ "\.php$"> 
    AddHandler fcgid-script .php 
    FcgidWrapper c:/php/php-cgi.exe .php 
</Files> 

Hinweis, dies basiert auf einem post in Apache Lounge. So hilfreich wie es war, ihre Version hatte Zitate um c: /php/php-cgi.exe und wenn Sie das tun, wird es nicht starten php-cgi.exe, zumindest unter Windows Server 2012, und Sie erhalten HTTP 500. Nahm mir ein paar schmerzhafte Tage, um das herauszufinden.

+0

Liebe Erica, DANKE, dass du das Problem für mich isoliert hast! Ich hatte damit mehrere Wochen gekämpft (wenn auch nur zeitweise). –

+0

Sehr froh zu helfen. :) –

+3

Das ist keine Antwort auf die Frage. Die Frage war, ob und wo fpm unter Windows ist. Sie haben eine * alternative * Methode zur Verwendung von fpm angegeben. – Kissaki

0

Alt wie dieser Beitrag muss ich hier wiegen, denn was hier gepostet wurde, ist nicht PHP-FPM, es läuft PHP mit Fast-CGI.

Ja PHP-FPM steht für PHP-FastCGI Process Manager und implementiert FastCGI, aber Sie vergessen, dass FPM viel mehr ist, da es Prozessverwaltungsfunktionen enthält, die nicht vom Webserver verwaltet werden.

Ein * nix-Systeme PHP-FPM verfügt über einen separaten Prozess, der die untergeordneten PHP-Prozesse verwaltet und über eine detaillierte Konfiguration verfügt, um anzugeben, wie diese Prozesse verwaltet werden. Weitere Informationen zu diesen Funktionen finden Sie unter here

Das Starten eines CGI-Prozesses unter Windows ist nicht dasselbe. Es werden keine Worker-Prozesse erstellt oder diese dynamisch skaliert oder Multithreading ermöglicht.

Es gibt noch kein PHP-FPM für Windows. http://php.net/manual/en/install.fpm.php#121725

Wie vorgeschlagen, können Sie jedoch einen CGI-Prozess starten, wenn Sie möchten.