I have changed the configuration of Apache to point towards a folder in my home directory:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/dbugger/html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/dbugger/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
I have even given my /home/dbugger/html
permission 777. But I still keep getting the same error message at http://localhost
: "403 Forbidden"
What is it that I am missing?
This worked for me
The important bit was to change
to
Enable
userdir
module:Enable PHP execution in user directory:
(Or if using php7.0, for example)
Comment this part (put
#
at the start of each line):Press Ctrl+X to save
Enable directory listing:
Add this:
Press Ctrl+X to save
Restart apache (
sudo
required here also):Now put your php files in
/home/yourname/public_html
directory and go tohttp://localhost/~yourname
from your web browser.Apache runs as user
www-data
. If it doesn't have execution permission on your home, apache will not be able to read any file.Change you home's group to
www-data
:And give it permission only to traverse your home directory:
You can also restrict permisions of
/home/dbugger/html
:You don't need change the permissions if you want to use your home directory to host the development environment, at least that you need write permissions for some applications. You need apache mod_userdir module and you can access to /home/user_name/public_html/* like this http://domain.local/~user_name/dir_name/* for use a virtual hosts, to use the mod_userdir module you need create a sym link like this:
according to their page: https://httpd.apache.org/docs/2.4/howto/public_html.html
you can set userdir to something better: /var/www and create a directory in there by a "username", which you could make owned by a simple user, but world readable (i.e. 755), the user is required to copy files there, but it's a lot safer than making / or ~ world readable, etc.