
我知道這是一個常見問題,但我發現沒有與我的案例完全匹配的討論。
nginx 錯誤日誌顯示:
FastCGI 在 stderr 中傳送:「無法開啟主腳本:/usr/share/nginx/drupal7/index.php
但:
這個路徑是正確的,這是我網站的根目錄
www-data
有權訪問它(如果我su www-data
這樣做,cat /usr/share/nginx/drupal7/index.php
則會顯示該文件)。nginx root 和
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
使用者可以存取myindex.php
但不能存取FastCGI呢?為什麼FastCGI嘗試了正確的路徑,但隨後又說它不存在?
答案1
您已經設定了 chroot。當進程處於chroot時,從root到腳本的路徑是這樣的:
/index.php
因此,您需要修改 FastCGI 腳本呼叫所使用的路徑,以便它們不包含腳本檔案的完整目錄路徑。