當路徑和權限都正常時,如何修復 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 root 和fpm/pool.d/myserver.confchroot 都指向同一個資料夾:/usr/share/nginx/drupal7

  4. www-data使用者和群組有權660存取同一資料夾pool.d/myserver.conf

  5. ps -u www-data顯示它擁有 nginx 和 php5-fpm 進程

  6. 我沒有安裝 SElinux(正如一些討論所說這可能是問題所在)

那為什麼www-data使用者可以存取myindex.php但不能存取FastCGI呢?為什麼FastCGI嘗試了正確的路徑,但隨後又說它不存在?

答案1

您已經設定了 chroot。當進程處於chroot時,從root到腳本的路徑是這樣的:

/index.php

因此,您需要修改 FastCGI 腳本呼叫所使用的路徑,以便它們不包含腳本檔案的完整目錄路徑。

相關內容