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
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.
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.
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) –
Ecco come installare php-fpm su Windows:
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.
Decomprimere il file, ad es. decomprimere in C: \ php-5.3.10-Win32-VC9-x86
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
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
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.
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; }
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.
Cara Erica, GRAZIE per aver risolto il problema per me! Ho avuto a che fare con questo per diverse settimane (anche se a intermittenza). –
Molto felice di aiutare. :) –
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
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.
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