J'ai configuré plusieurs versions de PHP sous Apache sous Windows en utilisant mod_fcgid. La configuration est comme ceci:mod_fcgid lecture timeout à partir de pipe, fin de sortie de script avant en-têtes, plusieurs versions de 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
Et puis un gestionnaire de fcgi spécifique dans chaque directive vhost:
<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>
De cette façon http://example.local/ fonctionne avec PHP 5.5, mais http://example.local:81/ sert le même code mais avec PHP 7.0. Très pratique pour tester plusieurs versions de PHP sur le même système.
Mais je continue d'obtenir des délais d'attente fcgi après environ 40-60 secondes, ce qui m'empêche d'utiliser efficacement xdebug.
J'ai vérifié le nombre de questions similaires sur SO, dont la plupart suggèrent correctement de définir une valeur plus élevée de FcgidIOTimeout
option, mais pour une raison inconnue cela n'a absolument aucun effet sur mon système.