Домашняя страница PHP-FPM http://php-fpm.org/ утверждает, что она является частью PHP с PHP 5.3.3. Теперь мне было интересно, когда я загружаю новейшие двоичные файлы PHP из php.net, в нем нет php-fpm. Как мне это получить? Он даже доступен для Windows?
Php-fpm для Windows?
Ответ 1
Здесь, как настроить php-fpm в Windows:
-
Загрузите .zip файл из http://windows.php.net/download/. Файл .zip должен быть VC9 с файлом FastCGI (php-cgi.exe). Не загружайте VC6 и не загружайте файл .msi, потому что для установки php-fpm требуется установка IIS. Zip файл содержит php-cgi.exe, который вам нужен для php-fpm. Я загрузил несколько более старую версию, php-5.3.10-Win32-VC9-x86.zip, отсюда http://windows.php.net/downloads/releases/archives/, потому что я хотел сопоставить версию, запущенную на моем производственный сервер.
-
Разархивируйте файл, например. распакуйте в C:\php-5.3.10-Win32-VC9-x86
-
Отредактируйте файл php.ini по мере необходимости. Что я сделал:
# nginx security setting cgi.fix_pathinfo=0 extension_dir = "C:\php-5.3.10-Win32-VC9-x86\ext"
включить следующие модули, раскомментировав их:
extension=php_curl.dll extension=php_mbstring.dll extension=php_mysqli.dll
-
Создайте файл .bat где-нибудь, например. start-php-fcgi.bat в каталоге веб-сервера или в каталоге 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
-
Дважды щелкните файл .bat, чтобы запустить php-fpm. Окно будет всплывать и оставаться открытым во время его запуска. Его вид раздражает, но просто не заглянул в настройку его как сервис еще.
-
Настройте свой веб-сервер. Если вы хотите использовать его с nginx, здесь пример конфигурации для 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; }
Ответ 2
Ответ Dereckson - отличное начало. Однако для Apache 2.4 и более поздних версий вам не нужно запускать PHP-FPM в качестве отдельной службы, вы можете использовать mod_fcgid для обработки всего, что находится внутри Apache.
Вот пример конфигурации:
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>
Обратите внимание: это основано на сообщении в Apache Lounge. Насколько они были полезны, их версия имела цитаты вокруг c:/php/php-cgi.exe, и если вы это сделаете, она НЕ ЗАПУСТИТ php-cgi.exe, по крайней мере, на Windows Server 2012, и вы получите HTTP 500. Взять мне несколько дней, чтобы понять это.
Ответ 3
Старый, как этот пост, я должен взвесить здесь, потому что то, что было опубликовано здесь, это не PHP-FPM, а PHP с использованием Fast-CGI.
Да, PHP-FPM означает PHP-FastCGI Process Manager и, таким образом, реализует FastCGI, но вы забываете, что FPM гораздо больше, чем тот, который содержит функции управления процессом, которые не управляются веб-сервером.
В системах * nix PHP-FPM имеет отдельный процесс, который управляет дочерними процессами PHP и имеет подробную конфигурацию, чтобы указать, как эти процессы управляются. Подробнее об этих функциях читайте здесь.
Запуск процесса CGI на окнах - это не одно и то же. Он не обрабатывает рабочие процессы или динамически масштабирует их или не допускает многопоточность.
Пока нет PHP-FPM для окон. http://php.net/manual/en/install.fpm.php#121725
Однако, как вам было предложено, вы можете запустить процесс CGI, если хотите.
Ответ 4
Начиная PHP v5.3.3, поддержка FPM Server-API [SAPI] была интегрирована в основной PHP. Это означает, что вы можете использовать исходные коды PHP и компилировать их и создавать их с помощью FPM-SAPI [с использованием параметра конфигурации --enable-fpm
configuration], вместо того, чтобы сказать Apache SAPI [ --enable-apx2
]. Как показано в PHP-Wiki, вы можете создавать PHP почти так же, как в системах * nix, то есть конфигурироваться. Я бы посоветовал вам сначала изучить все возможности создания PHP в системах * nix и даже попытаться сделать это самостоятельно [обычная configure
, make
и make install
шаблона make install
], а затем попытаться использовать опыт, полученный от него, для создания на Windows Окружающая среда.
В дополнение к параметру конфигурации --enable-fpm
есть еще два дополнительных параметра: --with-fpm-user=USERNAME_HERE
и --with-fpm-group=USERGROUPNAME_HERE
. Эти два работают в среде * nix, но могут быть недоступны в Windows.
В целом, я уверен, что вы можете создать собственное приложение для PHP-FPM-сервера в Windows с помощью Visual Studio IDE. На момент написания этой статьи нет официальных сборников PHP-FPM.
РЕДАКТИРОВАТЬ 1: Хорошо, предположим, что я могу ошибаться в возможности создания PHP-FPM в Windows, поскольку этот SAPI использует компонент libevent
из среды * nix. Угадайте, что вам все равно придется придерживаться установки Cygwin.
Ответ 5
PHP-FPM доступен только для Linux. Есть некоторые сайты, в которых содержится учебник о том, как запустить php-fpm для работы в окнах под cygwin. Вы можете попробовать эти руководства.