2

This is on my dev machine which is running Linux mint 16 (which is based on Ubuntu 13.10). I installed lamp via:

apt install lamp-server^

and am running Apache 2.4.6

Upon installing lamp I created an info.php file to run phpinfo(); in /var/www, and of course that worked fine. On my dev machine I like to create a ~/public_html in my users home folder. Inside there I create my vhosts folders.

then I gave the public_html folder to the www-data user:group added myuser to the www-data group, and gave users and groups rwx access with:

chmod -R 775 /home/myuser/public_html

now my public_html and children look like

drwxrwxr-x    5 www-data www-data  4096 Apr  1 12:10 public_html

now I created a /etc/apache2/sites-available/example.local.conf

<VirtualHost *:80>
    ServerName example.local
    DocumentRoot "/home/myuser/public_html/example.local.d"
    <Directory "/home/myuser/public_html/example.local.d">
            Options Includes FollowSymLinks
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>
</VirtualHost>

Then ran:

a2ensite example.local.conf
service apache2 reload // I've also service apache2 restart

then going to example.local I get a 403

I have tried a few different configurations for the vhost .conf file. In one I specified error logs

in the error.log I got:

[Tue Apr 01 12:13:06.375465 2014] [core:error] [pid 14208] (13)Permission denied:          [client 127.0.0.1:45489] AH00035: access to / denied (filesystem path     '/home/myuser/public_html') because search permissions are missing on a component of the path

[Tue Apr 01 12:13:06.600588 2014] [core:error] [pid 14208] (13)Permission denied: [client 127.0.0.1:45489] AH00035: access to /favicon.ico denied (filesystem path '/home/myuser/public_html') because search permissions are missing on a component of the path

How do I fix this?

P.S. This is going to be for developing a Drupal site if that helps with the answer.

2

Your error message says:

because search permissions are missing on a component of the path

which means that a parent directory does not allow Apache to traverse it.

To find out what directory that is, use ls -ld on each directory in turn, or (Linux-only) use namei:

namei -l /home/myuser/public_html

You will then be shown the permissions and be able to find the directory with the permissions that need to be corrected. For example, you may see:

f: /home/myuser/public_html
drwxr-xr-x root   root   /
drwxr-xr-x root   root   home
drwx------ myuser myuser myuser
drwxr-xr-x myuser myuser public_html

In this case, /home/myuser does not allow directory traversal for anyone other than the user. So it would be corrected with:

chmod +x /home/myuser
|improve this answer|||||
-2
sudo chmod o+x -R /home/myuser/
sudo chmod 777 -R /home/myuser/

This works for me.

|improve this answer|||||
  • 1
    Any answer including chmod 777 is doing it wrong. – kasperd Mar 31 '15 at 22:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.