我在 apache2 下執行 FastCgiServer 時遇到問題。當我定義配置了靜態 fcgi 伺服器的虛擬主機時,我從 suexec 收到錯誤:
command not in docroot (/var/www-blah/dispatcher.fcgi)
這是正確的,因為 docroot 是/var/www
.但是當我使用由 magic 生成的動態 fastcgi 時AddHandler
,我也在使用suexec
並且不會發生同樣的問題 - 即使腳本位於/home/.../public_html/dispatcher.fcgi
.
是什麼原因導致suexec
那裡能夠正確運作呢?如何在虛擬主機上複製該行為?
更新:實際上,我將我的東西從 移動/var/www-blah
到/var/www/blah
,所以它位於 docroot 下並且可以工作。我猜 suexec 有一些 public_html 檢測。
但仍然不起作用的是動態 fastcgi 和 suexec 下的/var/www/...
。即使腳本由正確的使用者擁有,suexec 也不會顯示任何錯誤並且似乎不會運行(腳本作為 www-data 工作)
答案1
suexec 僅執行 apache 文檔根目錄中的程式。看suexec 安全性模型,特別是第 13 點。