If you have just installed a FreeBSD host with Apache and configured a Vhost document root to interpret PHP or Perl scripts and you end up with error in browser like:
HTTP 403 / client denied by server configuration error
or
Forbidden
You don't have permission to access /index.html on this server.
It is most likely due to improperly configured Apache directory or directories permissions. In Apache error log /var/log/httpd-error.log, there are plenty of error messages logged like:
[Tue Jan 15 13:09:39 2013] [error] [client 92.96.95.177] client denied by server configuration: /usr/home/hipo/public_html/management
[Tue Jan 15 13:09:41 2013] [error] [client 92.96.95.177] client denied by server configuration: /usr/home/hipo/public_html/management
[Tue Jan 15 13:09:41 2013] [error] [client 92.96.95.177] client denied by server configuration: /usr/home/hipo/public_html
[Tue Jan 15 13:09:41 2013] [error] [client 92.96.95.177] client denied by server configuration: /usr/home/hipo/public_html
[Tue Jan 15 13:09:41 2013] [error] [client 92.96.95.177] client denied by server configuration: /usr/home/hipo/public_html
[Tue Jan 15 13:09:41 2013] [error] [client 92.96.95.177] client denied by server configuration: /usr/home/hipo/public_html
The issue is caused by Apache <Directory> configuration which is restrictive and set to first deny and then apply allow rule, i.e.:
<Directory /usr/home/hipo/public_html>
Options ExecCGI -Indexes FollowSymLinks
Allowoverride All
Order Deny,allow
Deny from all
Allow from localhost
Allow from 123.123.123.123
</Directory>
To solve the problem change default Deny set policy (Deny from all) and first policy to be applied which is Deny to allow;
<Directory "/usr/home/hipo/public_html">
Options ExecCGI -Indexes FollowSymLinks
Allowoverride All
Order Allow,deny
Allow from all
#DirectoryIndex index.cgi
</Directory>
It is possible to not specify any Order Allow,deny (if there is no previous Apache <Directory> directive to override, so in many cases you can use;
<Directory "/usr/home/hipo/public_html">
Options ExecCGI -Indexes FollowSymLinks
Allowoverride All
Allow from all
#DirectoryIndex index.cgi
</Directory>
Finally restart Apache and all should be good;
freebsd# /usr/local/etc/rc.d/apache22 restart
....
More helpful Articles
Tags: apache error log, configured, document root, error messages, freebsd, indexes, perl scripts, server configuration error