nginx에 빈 응답을 반환하는 php-fpm


9

nginx는 /etc/nginx/fastcgi_params위치 블록 의 표준 을 사용하여 fastcgi를 통해 php-fpm에 연결합니다 .

로 명령 줄에서 /.status(php-fpm.ini::ping.path)에 연결 cgi-fcgi -bind하면 결과가 예상대로 돌아옵니다 (X-Powered-By set, response body 등).

nginx로 요청하면 결과가 비워집니다 (X-Powered-By 설정, 본문 길이 또는 내용 없음). nginx는 "유효한"응답을 얻었으므로 200을 반환합니다.

tcpdump를 살펴보면서 FCGI 헤더에서 패리티 요청을 분리했습니다 (쉘에서 설정 한 사용자 관련 env 변수 빼기).


nginx runs as 사용자로 변경하고 cgi-fcgi -bind 테스트를 다시 실행하십시오.
일부 Linux Nerd

나는 항상 루트로 테스트하여 NRPE 배포를 망쳐 놓았다.
일부 Linux Nerd

답변:


11

표준 factcgi_params파일에는에 대한 키 라인이 없습니다 SCRIPT_FILENAME.

location ~ \.php$ {
                include fastcgi_params;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

그것을 추가하고 nginx를 다시 시작하십시오.


4

글쎄, 당신의 질문은 약간 모호합니다. 소위 "죽음의 흰색 화면"(WSOD)은 끝없는 일에 의해 유발 될 수 있습니다. 그러나이 문제가 발생하면 몇 가지 작업을 수행하십시오.

  • 에서 다음을 활성화하십시오 php.ini.

    display_errors = 1
    display_startup_errors = 1
    error_log = /path/to/file
    error_reporting = -1 ; (the -1 activates absolutely everything)
    log_errors = 1
    
  • 에서 활성화하십시오 php-fpm.conf:

    error_log = /path/to/file
    
  • 각 php-fpm 풀 구성에 대해 활성화하십시오.

    catch_workers_output = 1
    
  • 요청을 반복하고 모든 로그를 확인하십시오 (nginx 오류 로그 포함).
  • 로깅 레벨 증가 (예 : nginx의 디버그)

이 중 아무것도 문제를 해결하는 데 도움이되지 않으면 전체 시스템 정보 및 구성을 게시하십시오. 그것 없이는 아무도 당신에게 정확한 답을 줄 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.