Я установил несколько версий PHP под Apache в Windows, используя mod_fcgid. Конфигурация такая:
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 в каждой директиве 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>
Таким образом, http://example.local/ работает с PHP 5.5, но http://example.local:81/ содержит тот же код, но с PHP 7.0. Очень удобно для тестирования нескольких версий PHP в одной системе.
Но я продолжаю получать тайм-ауты fcgi примерно через 40-60 секунд, что мешает мне эффективно использовать xdebug.
Я проверил ряд подобных вопросов на SO, большинство из которых правильно предлагают установить более высокое значение параметра FcgidIOTimeout
, но по неизвестной причине это абсолютно не влияет на мою систему.