1. 程式人生 > >全解:解決Apache下403 Forbidden錯誤

全解:解決Apache下403 Forbidden錯誤

解決Apache下403 Forbidden錯誤

==============================

以下內容引至: http://java-zone.org/138.html
麻逼這麼全的解決方案都解決不了我的問題,我僅僅是修改了DocumentRoot ,selinux關了iptables關了/etc/httpd/conf/httpd.conf 奶腿的看了一萬遍。 最後想明白DocumentRoot改到/data/www/domains 我應該確保apache使用者都能訪問。 [root@localhost]chmod o+x /data [root@localhost]chmod o+x /data/www

[root@localhost]chmod o+x /data/www/domains
問題解決了。我日 最後得出結論:httpd.conf 中User Group 很重要,應該是你web目錄的擁有者許可權! ==============================

apache 提示You don't have permission to access

出現這樣的問題一般有兩種可能性。

一種可能性是DocumentRoot選項的設定,如果在安裝好apache2後修改了該選項,並且忘記了配置該新目錄的訪問許可權就會出現這樣的情況。比如apache2安裝好後預設的引數如下

DocumentRoot /usr/local/www/data

<directory “/usr/local/www/data”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</directory>我們常常會重新指定web檔案存放的目錄,比如設定
DocumentRoot /var/www
這時往往會忽略了對後面的Directory 項的修改,必須將裡面的路徑同時修改為 /var/www才行,否則將會訪問所有目錄都出現 403 forbidden錯誤。

今天在公司電腦上安裝Apache,版本2.2.8,裝完剛測試可以;配置了下php的php.in檔案再次localhost打開發現錯誤:HTTP 錯誤 403 – 禁止訪問,即403 Forbidden:You don’t have permission to access / on this server.許可權又不夠了?

馬上開啟apache的配置檔案httpd.conf,逐行檢查。在大約快一半的地方有以下這段程式碼: 

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
 

發現了吧。由於配置了php後,這裡的“Deny from all”已經拒絕了一切連線。把該行改成“allow from all”,修改後的程式碼如下,問題解決。 

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory>
 
 

另外一種可能性出現在我們配置了不同的VirtualHost,並且有某個VirtualHost的DocumentRoot不在全域性的DocumentRoot目錄下,這時必須在全域性種單獨增加對該目錄的Directory 項進行設定,否則該VirtualHost下的所有訪問均會出現403 forbidden錯誤。

這個問題是因為Apache2對於許可權和安全的更高要求,對分佈在不同磁碟上的目錄檔案進行嚴格管理,我們進行web規劃的時候必須注意這一點。

試試下面的步驟。

第一:看看是不是Directory配置錯了,好像一般不會是這個原因
第二:看看User Group指定的使用者有沒有許可權訪問那個目錄,否則用chown修改目錄的所有者
第三:看看是不是seLinux搞得鬼,一般沒事把selinux停了再重啟linux,selinux的配置檔案在/etc/selinux/config,改成disable
第四:我把所有的都做了發現還是不行,那麼可能是apache是用root安裝的,把apache卸了用一個非root使用者重新安裝。