2010-12-27 22 views
26

L'homepage di PHP-FPM http://php-fpm.org/ afferma che fa parte di PHP da PHP 5.3.3. Ora, mi stavo chiedendo, quando ho scaricato i nuovi binari PHP da php.net, non c'è php-fpm in esso. Come lo ottengo? È disponibile anche per Windows?php-fpm per Windows?

risposta

0

PHP-FPM è disponibile solo per Linux ora. Ci sono alcuni siti che forniscono un tutorial su come far funzionare php-fpm su windows, sotto cygwin. Puoi provare quelle guide.

+6

PHP-FPM si installa piuttosto facilmente su Windows in questo momento. Anche nel 2011, la tua risposta era visibilmente sbagliata: (1) se funzionava con Cygwin, funzionava sotto Windows e fuori Linux (2) funzionava su Solaris, FreeBSD, NetBSD, Mac OS X, OpenBSD, ecc. – Dereckson

3

Avvio di PHP v5.3.3, il supporto FPM Server-API [SAPI] è stato integrato nel core PHP. Questo significa che puoi prendere i codici sorgente di PHP e compilarli e costruirli con FPM-SAPI [usando il parametro --enable-fpm parametro di configurazione], invece di dire Apache SAPI [--enable-apx2]. Come mostrato in PHP-Wiki, puoi creare PHP quasi come nei sistemi * nix, vale a dire in termini di configurazione. Ti suggerirei di apprendere i dettagli della creazione di PHP in sistemi * nix e persino di provare a farlo da soli [al solito configure, make e make install pattern], quindi provare a utilizzare l'esperienza acquisita per creare su ambiente Windows. .

Oltre al parametro di configurazione --enable-fpm, vi sono anche due parametri aggiuntivi: --with-fpm-user=USERNAME_HERE e --with-fpm-group=USERGROUPNAME_HERE. Questi due funzionano in ambiente * nix, ma potrebbero non essere disponibili in Windows.

Nel complesso, sono abbastanza sicuro che è possibile creare la propria app server PHP-FPM su Windows utilizzando IDE di Visual Studio. Non ci sono build ufficiali PHP-FPM alla data di questo scritto.

MODIFICA 1: Ok, suppongo che potrei avere torto sulla possibilità di creare PHP-FPM su Windows, poiché questo SAPI utilizza il componente libevent dall'ambiente * nix. Suppongo che dovrai rimanere con Cygwin-bundled installation dopotutto.

+0

Apparentemente libevent ha rimosso come da 5.3.4 in base ai commenti su [questa pagina] (http://www.php.net/manual/en/install.fpm.install.php) –

25

Ecco come installare php-fpm su Windows:

  1. scaricare il file .zip da http://windows.php.net/download/. Il file .zip deve essere VC9 con il file FastCGI (php-cgi.exe). Non scaricare VC6 e non scaricare il file .msi perché richiede già l'installazione di IIS per installare php-fpm. Il file zip contiene php-cgi.exe che è quello che ti serve per php-fpm. Ho scaricato una versione leggermente più vecchia, php-5.3.10-Win32-VC9-x86.zip, da qui http://windows.php.net/downloads/releases/archives/ perché volevo abbinare la versione in esecuzione sul mio server di produzione.

  2. Decomprimere il file, ad es. decomprimere in C: \ php-5.3.10-Win32-VC9-x86

  3. Modificare il file php.ini se necessario. Quello che ho fatto:

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

    attivare i seguenti moduli da loro decommentando:

    extension=php_curl.dll 
    extension=php_mbstring.dll 
    extension=php_mysqli.dll 
    
  4. generare una lima da qualche parte, per esempio start-php-fcgi.bat nella directory web server o nella directory di PHP:

    @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. doppio clic sul file .bat per avviare php-fpm. Una finestra apparirà e resterà aperta mentre è in esecuzione. È un tipo fastidioso, ma non l'ho ancora configurato come servizio.

  6. Configura il tuo server web. Se si desidera utilizzare con nginx, ecco un esempio di configurazione per 127.0.0.1:9123: risposta

    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

Informazioni utili per farlo funzionare, qualsiasi esperienza in usandolo con Apache e mod_proxy_fcgi –

+37

ma quello non è php-fpm, è fastcgi – Michelle

+12

php-fpm = php-Fastcgi Process Manager – Alan

7

di Dereckson è un ottimo inizio. Tuttavia, per Apache 2.4 e versioni successive non è necessario eseguire PHP-FPM come servizio separato, è possibile utilizzare mod_fcgid per gestire tutto all'interno di Apache.

Ecco un esempio di configurazione:

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> 

Nota, questo si basa su un post in Apache Lounge. Per quanto fosse utile, la loro versione aveva le virgolette c: /php/php-cgi.exe e se lo fai NON AVVIA PHP php-cgi.exe, almeno su Windows Server 2012, e ricevi HTTP 500. Took mi dolgono alcuni giorni per capirlo.

+0

Cara Erica, GRAZIE per aver risolto il problema per me! Ho avuto a che fare con questo per diverse settimane (anche se a intermittenza). –

+0

Molto felice di aiutare. :) –

+3

Questa non è una risposta alla domanda. La domanda era se e dove fpm è su Windows. Hai fornito un approccio * alternativo * all'utilizzo di fpm. – Kissaki

0

Vecchio come questo post devo pesare qui perché ciò che è stato postato qui non è PHP-FPM, sta eseguendo PHP usando Fast-CGI.

Sì PHP-FPM è l'acronimo di PHP-FastCGI Process Manager e pertanto implementa FastCGI, ma si sta dimenticando che FPM è molto più di questo poiché contiene funzionalità di gestione dei processi che non sono gestite dal server web.

Su sistemi * nix PHP-FPM ha un processo separato che gestisce i processi figlio di PHP e ha una configurazione dettagliata per specificare come questi processi sono gestiti. Per i dettagli su queste funzioni leggere

Avviare un processo CGI su Windows non è la stessa cosa. Non esegue lo spaw dei processi di lavoro o li scala dinamicamente o consente il multi-threading.

Non c'è ancora PHP-FPM per Windows. http://php.net/manual/en/install.fpm.php#121725

Tuttavia, come suggerito, è possibile avviare una procedura CGI se lo si desidera.