パスと権限が正しい場合に、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ユーザーは私のファイルにアクセスできるindex.phpのに、FastCGI にはアクセスできないのでしょうか? FastCGI は正しいパスを試行しても、それが存在しないと表示されるのはなぜでしょうか?

答え1

chroot が設定されています。プロセスが chroot 内にある場合、ルートからスクリプトへのパスは次のようになります。

/index.php

したがって、FastCGI スクリプト呼び出しで使用されるパスを変更して、スクリプト ファイルへの完全なディレクトリ パスが含まれないようにする必要があります。

関連情報