У меня есть установка PHP-FPM с Apache 2.4 с использованием proxy_fcgi, все работает нормально, но каждый из 4-6 запросов Apache возвращает пустую страницу. Это происходит на моем основном сайте http://danielhe.com/, но не поддомен vhosts.
Это показывает журнал ошибок Apache, [клиент x] AH01070: Ошибка синтаксического анализа заголовков скрипта
И, в конце концов, иногда Apache segfaults AH00052: child pid 9740 exit signal Segmentation fault (11)
Я могу очень легко воспроизвести «Заголовки сценария синтаксического анализа ошибок», обновив страницу пару раз, но ошибка сегментирования происходит случайным образом после пары заголовков сценария синтаксического анализа ошибок »
Обновить Я нашел исправление ошибок сегментов, и WSOD, по-видимому, исправился сам. mod_deflate имеет некоторые проблемы, но эта конфигурация из документации Apache исправила их
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
Решением было использовать эту конфигурацию
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
Проблема здесь в том, что ответ от phpList не заполняет полный пакет. php-fpm преждевременно прерывает соединение с Apache, если его ответ не заполняет хотя бы один буфер. В качестве обходного пути вы можете временно переключиться на mod_php или дополнить ответ каким-то случайно сгенерированным текстом.
Я могу подтвердить, что приведенное выше решение сработало для меня, но мне также пришлось исправить настройки ProxyPassmatch.
Старый конфиг
<IfModule proxy_module>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/YOURDOMAIN/public_html/$1
</IfModule>
Новая конфигурация - другой фильтр перезаписи, плюс код сверху
<IfModule proxy_module>
ProxyPassMatch ^(.*\.php)$ fcgi://127.0.0.1:9000/home/YOURDOMAIN/public_html/$1
</IfModule>
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
...code from above
</IfModule>