概要
CentOS7にapacheを入れた際、いつも/var/www/htmlのDocumentRootのディレクトリをシンボリックリンクにしています。
これまでCnetOS6ではあまり気にすることなくDocumentRootをシンボリックリンクにしていましたが、今回のCentOS7でつまずいたのでメモ。
原因
Selinuxの設定でCentOS6ではなかった部分が追加されたのか、、、ある項目のせいで下記エラーが出てアクセスできない。
PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on
解決方法
Selinuxの項目は下記の項目をonにする必要がある
#現在の設定確認
root> getsebool -a | grep "httpd_enable_homedirs\|httpd_read_user_content"
root> httpd_enable_homedirs --> on
root> httpd_read_user_content --> on
#設定変更
root> setsebool -P httpd_enable_homedirs on
root> setsebool -P httpd_read_user_content on
例のごとくラベルも設定する。
この部分はいつもどおり下記の通り設定する。
#ホームディレクトリの中の場合、ユーザディレクトリのパーミッションを701に
#シンボリックリンク作成
ln -s /home/[target directory]/ /var/www/html
#ラベル貼り替え
semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
#ラベル有効化
restorecon -R -v /var/www/