Apache + PHP-FPM = 임의의 “스크립트 헤더 구문 분석 오류”+ 세그먼트 오류 새로 고치면 “스크립트 헤더 구문 분석

proxy_fcgi를 사용하여 Apache 2.4에서 PHP-FPM을 설정했는데 모두 정상적으로 작동하지만 4-6 요청의 모든 항목은 Apache가 빈 페이지를 반환합니다. 이것은 내 기본 사이트 http://danielhe.com/ 에서 발생하지만 하위 도메인 가상 호스트에서는 발생하지 않습니다.

아파치 오류 로그 [client x] AH01070 : 스크립트 구문 분석 오류

그리고 때로는 Apache segfaults AH00052 : 자식 pid 9740 종료 신호 분할 오류 (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


답변

위의 솔루션이 효과가 있음을 확인할 수 있지만 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>


답변

여기서 문제는 phpList의 응답이 전체 패키지를 채우지 않는다는 것입니다. 응답이 하나 이상의 버퍼를 채우지 않으면 php-fpm이 Apache와의 연결을 조기에 끊습니다. 이 문제를 해결하기 위해 일시적으로 mod_php로 전환하거나 임의로 생성 된 텍스트로 응답을 채울 수 있습니다.


답변