Я установил несколько версий 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
, но по неизвестной причине это абсолютно не влияет на мою систему.