Подтвердить что ты не робот

Php-fpm для Windows?

Домашняя страница PHP-FPM http://php-fpm.org/ утверждает, что она является частью PHP с PHP 5.3.3. Теперь мне было интересно, когда я загружаю новейшие двоичные файлы PHP из php.net, в нем нет php-fpm. Как мне это получить? Он даже доступен для Windows?

4b9b3361

Ответ 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. Вы можете попробовать эти руководства.