How to allow acces to a symbolic link in my ~/Sites/ for Apache under Mac OS X Lion 10.7.2
Solution 1
Here is a blog post I wrote when I was trying to figure out how to do exactly what you are trying to do.
- Enable Web Sharing on the MAC by going to System Prefrences —> Sharing —> Check Enable Web Sharing
-
Edit your username.conf file located in /private/etc/apache2/users and add the “FollowSymLinks” directive:
<Directory "/Users/yourUserName/Sites/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
-
Edit the /private/etc/apache2/httpd.conf file and make sure the line under “# Virtual hosts” is not commented out, like so:
Include /private/etc/apache2/extra/httpd-vhosts.conf
-
Edit the /private/etc/apache2/extra/httpd-vhosts.conf file and add:
<VirtualHost *:80> <Directory /Users/yourUserName/Sites/MyWebSite.com> Options +FollowSymlinks +SymLinksIfOwnerMatch AllowOverride All </Directory> DocumentRoot /Users/yourUserName/Sites/MyWebSite ServerName MyWebSite.local </VirtualHost>
-
Edit the /etc/hosts file and add this at the top:
127.0.0.1 MyWebSite.local
-
Make a Symlink to link your Code directory to one in the Sites directory.
ln -s ~/Code/MyWebSite ~/Sites/MyWebSite
Restart apache
Solution 2
In fact only the first 2 steps from Emjay's answer plus an apache restart are necessary, here is what worked for me:
Enable Web Sharing on the MAC by going to System Prefrences —> Sharing —> Check enabled Web Sharing
-
Edit your
username.conf
file located in/private/etc/apache2/users
and add the FollowSymLinks directive:<Directory "/Users/yourUserName/Sites/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
-
check your apache config
sudo apachectl -t
-
restart apache
sudo apachectl restart
Now Apache will serve the symbolic links under your Sites
directory.
Solution 3
I was getting 403 forbidden
error. What solved my problem is in httpd-vhosts.conf
, I replaced the below config
<Location "/modulename">
Order allow,deny
Allow from all
</Location>
with
<Location "/modulename">
Require all granted
</Location>
Did the same for all the Location tags. It solved the permission issue.
Related videos on Youtube
robertj
Updated on September 18, 2022Comments
-
robertj over 1 year
I need allow access to a sym-linked directory within ~/Sites from my Apache. I Symlinked the directories like this
ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here
Now whenever I fire up a GET request I get a 403 reply
curl http://localhost/~username/source-link-here/ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access /~username/source-link-here on this server.</p> ...
How can I tell Apache to allow acces to the symlinked directory and how do I tell Apache to allow this only for requests fired from localhost.
Any help is greatly appreciated.
Best regards
robertj
-
robertj over 12 yearsHi, sorry - This answer doesnt help at all.
-
Lazy Badger over 12 yearsDid you tried do it? you disabled FollowSymLinks in Apache config, you must to enable at site or directory level in order to use symlinked resources
-
Lazy Badger over 12 yearsand check permissions for files inside ~, presence of DirectoryIndex file after it: solve task sequentially, checking all possibilities
-
robertj over 12 yearsagain - I am not able to make anything out of your comments. I am a total newbee concerning Apache (apart from my googling for the last 6 hours) I simply have no clue what the appropriate container is. What would be really helpful is a concrete example how to configure httpd.conf and httpd-vhost.conf.
-
juuga over 12 years@robertj - This is the solution to your problem. You need to edit that file and modify it accordingly like @Lazy_Badger said. It should be located under
<Directory /usr/share/web>
. Note that afterwards, you need to restart apache usingsudo /usr/sbin/apachectl restart
-
slhck over 12 yearsWelcome to Super User! It would be nice to include the essential parts of the answer here, and provide the link only for future reference.
-
Shanimal almost 12 yearsI went from xampp zend environment to the default mac/apache setup and after a restart was dead in the water. Step 2 was key. Thank you!