오늘 nginx를 설치하고 보니 html 페이지는 정상적으로 열람이 가능한데 php 파일 페이지를 열면 php-fpm 로그와 nginx 로그를 살펴보니 아무것도 나오지 않습니다. 문제
오랜 시간 동안 온라인으로 검색한 끝에 마침내 해결책을 찾았습니다. 여기에 메모를 남겨두겠습니다
nginx 설정 파일에는 그런 문장이 빠져있다는 말이 인터넷에 떠돌고 있습니다
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
이 문장은 무엇을 위한 문장인가요? 사실 php에서 사용하는 서버 변수인 $_SERVER를 정의하기 위한 것입니다
http://wiki.nginx.org/NginxHttpFcgiModule 이 URL 아래에 이런 문장이 있습니다
이 모듈을 사용하면 Nginx가 FastCGI 프로세스와 상호 작용하고 프로세스에 전달되는 매개 변수를 제어할 수 있습니다.
사실 서버는 PHP를 처리하는 CGI에 필요한 일부 매개변수를 전달하며, PHP는 실행되기 전에 최소한 다음 두 매개변수를 가지고 있어야 합니다.
다음은 PHP에 최소한으로 필요한 매개변수의 예입니다.
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
SCRIPT_FILENAME 매개변수는 PHP에서 실행할 스크립트 이름을 결정하는 데 사용되며 QUERY_STRING에는 요청 매개변수가 포함됩니다.
따라서 SCRIPT_FILENAME 시스템 변수를 정의하지 않으면 PHP가 이를 해석하고 실행할 수 없습니다
이 변수의 정의는 nginx 구성 파일 nginx.conf에 작성하거나 외부에서 작성하여 include를 사용하여 nginx.conf에 포함할 수 있습니다.