2016-10-21 8 views
2

mod_fcgidを使用してWindows上でApacheの下にいくつかのバージョンのPHPをセットアップしました。mod_fcgidヘッダ、PHPの複数のバージョンの前に、パイプからの読み込みタイムアウトの終了、

LoadModule fcgid_module modules/mod_fcgid.so 

FcgidInitialEnv SystemRoot "C:/Windows" 
FcgidInitialEnv SystemDrive "C:" 
FcgidInitialEnv TEMP "c:/php/tmp" 
FcgidInitialEnv TMP "c:/php/tmp" 
FcgidInitialEnv windir "C:/WINDOWS" 
FcgidIOTimeout 600 
FcgidConnectTimeout 600 
FcgidProcessLifeTime 3600 
FcgidMaxRequestsPerProcess 900 
FcgidMaxProcesses 10 
FcgidMaxRequestLen 80131072 
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000 

し、各バーチャルホストディレクティブ内の特定のfcgiのハンドラ:

<Virtualhost *:80> 
    VirtualDocumentRoot "e:/hosts/example" 
    ServerName example.local 
    # location of php.ini 
    FcgidCmdOptions c:/php/php5.5.12/php-cgi.exe InitialEnv PHPRC="c:/php/php5.5.12/" 
    FcgidWrapper "c:/php/php5.5.12/php-cgi.exe" .php 
</Virtualhost> 

<Virtualhost *:81> 
    VirtualDocumentRoot "e:/hosts/example" 
    ServerName example.local 
    # location of php.ini 
    FcgidCmdOptions c:/php/php7.0.12/php-cgi.exe InitialEnv PHPRC="c:/php/php5.5.12/" 
    FcgidWrapper "c:/php/php7.0.12/php-cgi.exe" .php 
</Virtualhost> 

PHP 5.5で動作http://example.local/この方法が、http://example.local:81/は同じコードを提供していますが、PHP 7.0での設定は、このようなものです。同じシステム上の複数バージョンのPHPをテストするのに非常に便利です。

しかし、私は約40-60秒後にfcgiタイムアウトを取得し続けているので、xdebugを効果的に使用することができません。

私は同様の質問をいくつか確認しましたが、そのほとんどはFcgidIOTimeoutオプションの高い値を設定することを正しく提案していますが、これは私のシステムには全く影響しません。

答えて

1

私は自分の質問に答えています。これは、この問題で誰かが何時間も戦う時間を節約することを望んでいます。

これにかなりの時間を費やして、私は、犯人が仮想ホストの設定でFcgidCmdOptionsを使用していたと考えました。それが定義されている場合、グローバルfcgidオプションは単に無視されます!だから、FcgidIOTimeoutの代わりにIOTimeoutというオプションをFcgidCmdOptionsに設定しなければならなかった。

最終的な構成は以下の通りです:

<Virtualhost *:80> 
    VirtualDocumentRoot "e:/hosts/example" 
    ServerName example.local 
    FcgidCmdOptions c:php/php5.5.12/php-cgi.exe \ 
      InitialEnv PHPRC="c:php/php5.5.12/" \ 
      InitialEnv PHP_FCGI_MAX_REQUESTS=1000 \ 
      IOTimeout 3600 \ 
      ConnectTimeout 3600 \ 
      MaxProcessLifeTime 7200 \ 
      IdleTimeout 3600 \ 
      MaxRequestsPerProcess 900 
    FcgidWrapper "c:php/php5.5.12/php-cgi.exe" .php 
</Virtualhost> 

<Virtualhost *:81> 
    VirtualDocumentRoot "e:/hosts/example" 
    ServerName example.local 
    FcgidCmdOptions c:php/php7.0.12/php7-cgi.exe\ 
      InitialEnv PHPRC="c:php/php7.0.12/" \ 
      InitialEnv PHP_FCGI_MAX_REQUESTS=1000 \ 
      IOTimeout 3600 \ 
      ConnectTimeout 3600 \ 
      MaxProcessLifeTime 7200 \ 
      IdleTimeout 3600 \ 
      MaxRequestsPerProcess 900 
    FcgidWrapper "c:php/php7.0.12/php7-cgi.exe" .php 
</Virtualhost> 
関連する問題