web-dev-qa-db-ja.com

Windows用のphp-fpm?

PHP-FPMのホームページ http://php-fpm.org/ は、PHP since PHP 5.3 .3。php.netから最新のPHPバイナリをダウンロードすると、php-fpmはありません。どうすれば入手できますか?ウィンドウズ?

31
marc40000

Windowsでphp-fpmをセットアップする方法:

  1. http://windows.php.net/download/ から.Zipファイルをダウンロードします。 .Zipファイルは、FastCGIファイル(php-cgi.exe)を持つVC9でなければなりません。 VC6をダウンロードしないでください。また、php-fpmをインストールするためにIISセットアップが既に必要です。Zipファイルにはphp-cgiが含まれているため、.msiファイルをダウンロードしないでください。 php-fpmに必要なexeです。ここから少し古いバージョンphp-5.3.10-Win32-VC9-x86.Zipをダウンロードしました http://windows.php.net/downloads/ release/archives / 本番サーバーで実行されているバージョンと一致させたかったためです。

  2. ファイルを解凍します、例えばC:\ php-5.3.10-Win32-VC9-x86に解凍します

  3. 必要に応じて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
    
  4. .batファイルをどこかに作成します。 webserverディレクトリまたはPHPディレクトリ内のstart-php-fcgi.bat:

    @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. .batファイルをダブルクリックして、php-fpmを起動します。ウィンドウがポップアップし、実行中は開いたままになります。ちょっと面倒ですが、まだサービスとして設定することを検討していません。

  6. Webサーバーを構成します。 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;
    }
    
25
Alan

デレクソンの答えは素晴らしいスタートです。ただし、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の前後に引用符があり、それを行うと、少なくともWindows Server 2012ではphp-cgi.exeが開始されず、HTTP 500が取得されます。私はそれを理解するために痛みを伴う数日。

11
Erica Kane

ここに投稿されたのはPHP-FPMではなく、Fast-CGIを使用してPHPを実行しているためです。

はい、PHP-FPMはPHP-FastCGI Process Managerの略で、FastCGIを実装しますが、FPMにはWebサーバーで管理されないプロセス管理機能が含まれているため、FPMがそれ以上であることを忘れています。

* nixシステムでは、PHP-FPMにはPHP子プロセスを管理する個別のプロセスがあり、これらのプロセスの管理方法を指定する詳細な構成があります。これらの機能の詳細は

WindowsでCGIプロセスを起動することは同じことではありません。ワーカープロセスをスポーしたり、動的にスケーリングしたり、マルチスレッドを許可したりしません。

Windows用のPHP-FPMはまだありません。 http://php.net/manual/en/install.fpm.php#121725

ただし、提案されているように、必要に応じてCGIプロセスを起動できます。

8
Ruben Funai

PHP v5.3.3、FPM Server-API [SAPI]サポートがコアPHPに統合されました。つまり、PHPのソースコードを取得し、FPM-SAPIを使用してコンパイルおよびビルドできます。 --enable-fpm構成パラメータ] Apache SAPI [--enable-apx2]。 PHP-Wiki に示されているように、ビルドすることができますPHP * nixシステムで行うのとほぼ同じ方法-つまり、構成に関して。私はあなたが学ぶことをお勧めします最初に* nixシステムでPHPを構築し、さらに自分でやろうとする[通常configuremakeおよびmake install pattern]、そしてそれから得られた経験を活用してWindows環境での構築を試みます。

に加えて --enable-fpm構成パラメーター。追加のパラメーターが2つあります:--with-fpm-user=USERNAME_HEREおよび--with-fpm-group=USERGROUPNAME_HERE。これら2つは* nix環境で動作しますが、Windowsでは使用できない場合があります。

全体として、Visual Studio IDEを使用してWindows上で独自のPHP-FPMサーバーアプリを構築できると確信しています。この記事の執筆時点では、公式のPHP-FPMビルドはありません。

編集1:OK、このSAPIは* nix環境のlibeventコンポーネントを使用するため、WindowsでPHP-FPMを構築する可能性について間違っているかもしれません。結局 Cygwin-bundled installation に固執する必要があると思います。

3

PHP-FPMは、現時点ではLinuxでのみ利用可能です。 cygwinの下でWindowsでphp-fpmを実行する方法に関するチュートリアルを提供するサイトがいくつかあります。これらのガイドを試すことができます。

2
Pheng Vang