Apache + PHP-FPM =随机的“错误解析脚本头” + Seg Faults


8

我已经使用proxy_fcgi与Apache 2.4一起安装了PHP-FPM,一切正常,但是4-6个请求中的每个请求,Apache都会返回一个空白页。这发生在我的主要网站http://danielhe.com/上,但不发生在子域虚拟主机上。

这显示了Apache的错误日志,[client x] AH01070:解析脚本头时出错

最终,有时Apache出现segfaults AH00052:子pid 9740退出信号分段错误(11)

通过几次刷新页面,我可以很容易地重现“错误解析脚本头”,但是在几次“错误解析脚本头”之后,seg错误会随机发生。

更新 我找到了针对段错误的修复程序,并且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

2
您应该回答自己的问题并将其标记为已接受的答案,以使该问题看起来像一个已解决的问题
regilero 2012年

Answers:


2

解决方案是使用此配置

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

您确定问题出在mod_deflate中吗?有参考吗?看起来很奇怪...
GioMac

@GioMac:我不知道-OP说那是解决问题的方法。我只是回答一下。请注意,SO已将其发送给我们,最初是在2012
。– user9517

0

我可以确认上述解决方案对我有用,但我也必须修复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>

0

这里的问题是phpList的响应没有填充完整的程序包。如果php-fpm的响应未填充至少一个缓冲区,则会过早断开与Apache的连接。作为解决方法,您可以临时切换到mod_php或用一些随机生成的文本填充响应。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.