nginx + php-fpm 으로 PHP 만 File not found.
nginx가 php 파일 일 때만
File not found.
을 반환하여 곤란했기 때문에,원인을 조사하는 방법을 기록해 둡니다.
또한 nginx 에러 로그에 다음 출력이 있다고 가정합니다.
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, ...
가능한 원인
File not found.
가 표시되면 아마 다음 중 하나입니다.SCRIPT_FILENAME
, fastcgi_pass
등 확인하는 것, 조사 방법
nginx
document root 아래 디렉토리, 파일에 대한 nginx 읽기 권한이 있다고 가정합니다.
index.html
를 문서 루트에 넣고 해당 요청에서 의도 한 내용이 반환되는지 여부. add_header
지시문을 추가하면 의도 한 응답 헤더가 반환되는지 여부. index.php
를 두어 File not found.
가 될지 어떨지..php
에 대한 location
지시문 설정을 확인합니다.fastcgi_pass
에 지정된 경로에서 php-fpm이 대기 중입니까? SCRIPT_FILENAME
의 값이 맞습니까?root
의 값이 /var/www/html/current/public
이면 /var/www/html/current/public/index.php
가 존재하는지 여부. php-fpm
/etc/php-fpm.d/*.conf
에서 access.log
지정되어 있다고 가정합니다./index.php
)가 요청되었는지 확인합니다. (nginx → php-fpm의 소통이 의도대로 되어 있는지 여부) user
, group
또는 listen.owner
, listen.group
가 nginx의 실행 사용자/그룹인지 여부. ps aux | grep php-fpm
등으로 실제로 실행중인 사용자를 확인합니다. 이번 자신의 경우는, php-fpm 의 실행 유저/그룹이
nginx
가 되어 있지 않은 것이 원인이었습니다.문서 루트 부하를 작성자 또는
nginx
그룹 만 읽을 수 있도록 설정했지만php-fpm 실행 사용자가
nginx
그룹이 아니기 때문에 php-fpm이 PHP 파일을 읽을 수없는 것 같습니다./etc/php-fpm.d/
아래에 www.conf
와 www-override.conf
를 배치하고,www-override.conf
에서 user
, group
를 nginx
로 지정했지만 실제로는 www.conf
의 내용 (apache
)이 채택되었습니다.파일을 가로 지르는 동일한 pool에 대한 설정을 덮어 쓸 수 있다고 생각했지만 다르다
아니면
www.conf
가 나중에 읽혔습니까?
Reference
이 문제에 관하여(nginx + php-fpm 으로 PHP 만 File not found.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shohei_ot/items/8606c5457533b3532cb2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)