Centos
“符號連結不允許或連結目標不可訪問”/ CentOS 6 上的 Apache
我有一個全新的 CentOS 6 安裝,它在文件根目錄中有一個指向我的開發文件的符號連結:
[root@localhost html]# ls -l total 4 -rwxrwxrwx. 1 root root 0 Sep 18 20:16 index.html -rwxrwxrwx. 1 root root 17 Sep 18 20:16 index.php lrwxrwxrwx. 1 root root 24 Sep 18 20:19 refresh-app -> /home/billy/refresh-app/
我的 httpd.conf 有這個:
<Directory "/"> Options All AllowOverride None Order allow,deny Allow from all </directory>
符號連結的目標具有允許 apache 讀取它想要的任何內容的權限:
[root@localhost billy]# ls -l total 40 (Some entries were omitted because the list was too long drwxr-xr-x. 7 billy billy 4096 Sep 18 20:03 refresh-app
我還嘗試通過更改禁用 SELinux
/etc/selinux/conf
:SELINUX=disabled
然而,無論我做什麼,當有人嘗試訪問該連結時
http://localhost/refresh-app/
,我都會收到 403 FORBIDDEN 錯誤頁面,這寫在/var/log/httpd/error_log
:Symbolic link not allowed or link target not accessible
為什麼 Apache 不能訪問符號連結的目標?
發現問題。事實證明,Apache 不僅想要訪問我正在服務的目錄 ,
/home/billy/refresh-app/
,還想要訪問上面的每個目錄,即/home/billy/
,/home
和/
. (我不知道為什麼……讓某人訪問子目錄不應該要求放棄對該子目錄上方所有內容的權限……)我猜它正在尋找
.htaccess
什麼,或者 *nix 可能對它如何處理目錄橫向權限感到奇怪。
我有一個類似的問題,我有以下配置,它曾經與 Ubuntu 10 一起工作,但停止與 Ubuntu 14 (Apache 2.4) 一起工作:
<Directory /var/www/vhosts/example.com/httpdocs> Options +FollowSymLinks </Directory>
切換到此排序問題(即使 Web 伺服器使用者無法直接訪問符號連結)
<Directory /var/www/vhosts/example.com/httpdocs> Options +ExecCGI +FollowSymlinks -SymLinksIfOwnerMatch </Directory>
據我所知,它只是
-SymLinksIfOwnerMatch
設置,與 Apache 2.4 的變化有關,但我還沒有嘗試研究確切的原因。我還認為這可能是
openbase_dir
由於 PHP 的限制,但事實並非如此。