경로와 권한이 정상일 때 nginx '입력 파일 없음'을 수정하는 방법은 무엇입니까?

경로와 권한이 정상일 때 nginx '입력 파일 없음'을 수정하는 방법은 무엇입니까?

나는 이것이 일반적인 질문이라는 것을 알고 있지만 내 사례와 정확히 일치하는 토론을 찾지 못했습니다.

nginx 오류 로그에 다음이 표시됩니다.

FastCGI가 stderr로 전송됨: "기본 스크립트를 열 수 없습니다: /usr/share/nginx/drupal7/index.php

하지만:

  1. 이 경로는 정확합니다. 이것이 내 웹사이트의 루트입니다.

  2. www-data액세스할 수 있는 권한이 있습니다(그러면 su www-data파일 cat /usr/share/nginx/drupal7/index.php이 표시됩니다).

  3. nginx 루트와 fpm/pool.d/myserver.confchroot는 모두 동일한 폴더를 가리킵니다./usr/share/nginx/drupal7

  4. www-data사용자와 그룹은 660동일한 폴더에 액세스할 수 있습니다.pool.d/myserver.conf

  5. ps -u www-datanginx 및 php5-fpm 프로세스를 소유하고 있음을 보여줍니다.

  6. SElinux가 설치되어 있지 않습니다. (일부 토론에서 문제가 될 수 있다고 말함)

그러면 왜 www-data사용자는 FastCGI에는 액세스할 수 있지만 index.phpFastCGI에는 액세스할 수 없습니까? FastCGI가 올바른 경로를 시도했지만 존재하지 않는다고 말하는 이유는 무엇입니까?

답변1

chroot가 설정되어 있습니다. 프로세스가 chroot에 있을 때 루트에서 스크립트까지의 경로는 다음과 같습니다.

/index.php

따라서 스크립트 파일에 대한 전체 디렉터리 경로가 포함되지 않도록 FastCGI 스크립트 호출에 사용되는 경로를 수정해야 합니다.

관련 정보