今天在修改了一下httpd.conf文件的DocumentRoot目錄后重啟了httpd服務,卻發(fā)現(xiàn)報錯了。 DocumentRoot must be a directory 。剛開始以為是自己配置有問題,后來檢查了好一遍并確認配置的DocumentRoot就是一個directory啊。哎,只好baidu一下了。呵呵,看來遇到過這種報錯的人還真不少啊。總結起來有兩種可能導致了DocumentRoot must be a directory報錯。
1、檢查虛擬目錄是否存在
如果你的DocumentRoot目錄設置設置的虛擬目錄不存的話,apache服務會啟動不起來的。
2、DocumentRoot的目錄配置中帶有中文
如果你的DocumentRoot目錄設置中有中文的話,請先修改成英文的試試吧。哈哈……如果還不行的話就請接著往下看吧。
3、SELinux的安全策略搞得鬼啊
這是因為系統(tǒng)啟用了SELinux安全策略之后會把目錄或文件設成各種類型, 如home_root_t和user_home_t類型等。因些apache的進程就沒有權限而無法訪問你剛才設置的DocumentRoot了。針對 Apache的進程SELinux的安全策略規(guī)定只能訪問 httpd_sys_content_t類型的目錄或文件。所以把目錄或文件的策略類型改成httpd_sys_content_t就可以了。修改命令如下:
chcon -R -h -t httpd_sys_content_t /data/coderbolg/
可以用
4、禁用SELinux
如果你真的被SELinux折磨的沒有辦法了。那就直接禁用SELinux吧。系統(tǒng)的不安全總比服務器不能訪問的權重要低些吧。直接編輯SELinux的配置文件。
vim /etc/sysconfig/selinux
把SELINUX的值從enforcing改成disabled就行。存盤退出。這回一定可以了,如果還不可以就重啟一下服務器吧。