
これはよくある質問だとはわかっていますが、私のケースにぴったり一致する議論は見つかりませんでした。
nginx エラー ログには次のように表示されます:
FastCGI が stderr に送信しました: "プライマリ スクリプトを開けません: /usr/share/nginx/drupal7/index.php
しかし:
このパスは正しいです。これが私のウェブサイトのルートです
www-data
アクセス権があります (アクセス権があればsu www-data
ファイルcat /usr/share/nginx/drupal7/index.php
が表示されます)。nginx ルートと
fpm/pool.d/myserver.conf
chroot の両方が同じフォルダーを指します。/usr/share/nginx/drupal7
www-data
ユーザーとグループは660
同じフォルダにアクセスできますpool.d/myserver.conf
ps -u www-data
nginxとphp5-fpmのプロセスを所有していることを示していますSElinux はインストールしていません (一部の議論ではこれが問題になる可能性があると言われています)
では、なぜwww-data
ユーザーは私のファイルにアクセスできるindex.php
のに、FastCGI にはアクセスできないのでしょうか? FastCGI は正しいパスを試行しても、それが存在しないと表示されるのはなぜでしょうか?
答え1
chroot が設定されています。プロセスが chroot 内にある場合、ルートからスクリプトへのパスは次のようになります。
/index.php
したがって、FastCGI スクリプト呼び出しで使用されるパスを変更して、スクリプト ファイルへの完全なディレクトリ パスが含まれないようにする必要があります。