I do it barely and for me it’s kinda getting a headache every time I need to do it. I never remember exactly how it needs to be done. So here there are some steps in order to get a specific user using its home dir (usually ~/public_html/) with Apache. It will surely help me in the future and maybe it might help you too.
- Edit the /etc/httpd/conf/httpd.conf file.
Change the ‘UserDir disabled’ line to ‘UserDir enabled <username>’.
Uncomment the ‘UserDir public_html’ line.
Also uncomment the whole ‘<Directory /home/*/public_html>’ section until the ‘</Directory>’.
- Apply the proper permissions:
# chmod 711 ~<username>
# chmod 755 -R ~<username>/public_html/
- Run the following commands so SELinux wouldn’t bother you:
# setsebool -P httpd_enable_homedirs true
# chcon -R -t httpd_sys_content_t ~<username>/public_html # It looks like it’s not necessary. See dgrift’s comments below.
- Extra Tip: It looks like on PHP versions >= 5.3.0, to allow the short tag ‘<?’ we need to set ‘short_open_tag = On’ in the /etc/php.ini.
Restart the httpd service and after it you should be able to access http://localhost/~<username>/
UPDATE 1: Altered ‘setsebool httpd_enable_homedirs true’ into ‘setsebool -P httpd_enable_homedirs true’. Also added comment about the ‘chcon’ command. Thanks, dgrift.