Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a symbolic link in Sites directory

Tags:

macos

apache2

I have a file in my ~/Sites directory that works fine when I browse to it through coderama.local/~coderama/index2.php

Now I want to get tricky and move my index2.php file to somewhere else on my system, so I do this by creating a symbolic link. However, when I try to access coderama.local/~coderama/index2.php I now get the following error.

Any ideas anyone?

Thanks!

Forbidden

You don't have permission to access /~coderama/index2.php on this server.

like image 803
Coderama Avatar asked Sep 23 '10 02:09

Coderama


People also ask

Can you symbolic link a directory?

Symlink, also known as a symbolic link in Linux, creates a link to a file or a directory for easier access. To put it in another way, symlinks are links that points to another file or folder in your system, quite similar to the shortcuts in Windows. Some users refer to symlinks as soft-links.

How do I create a directory symbolic link in Windows?

Once LSE is installed, right-click the target file or folder you want to create a symlink to, then click “Pick Link Source.” Next, go to the folder where you want the symlink to appear, right-click it, then select “Drop As -> Symbolic Link.”

How can we create a symbolic link to file?

By default, the ln command creates hard links. To create a symbolic link, use the -s ( --symbolic ) option. If both the FILE and LINK are given, ln will create a link from the file specified as the first argument ( FILE ) to the file specified as the second argument ( LINK ).


2 Answers

That's a configurable Apache option. It appears that by default on Macs (and probably most installations) Apache is configured to not follow symbolic links. I'm guessing (as others mention above) that it's for security purposes.

But it can be really convenient at times to enable following of symbolic links, particularly during development of certain kinds of apps. What you need to do is 1) change the Apache configuration to allow the following of symbolic links, and then 2) restart Apache.

The configuration step is performed as follows:

a) cd /etc/apache2 (this is where Apache's configuration files are by default on a Mac)

b) you'll see a couple of directories here. One is called users

c) cd users

d) ls should reveal a .conf file with your login name (login.conf) I'm "marvo" so mine is named "marvo.conf"

e) Edit this file (I use vi) -- but you have to do it using sudo:

sudo vi marvo.conf 

f) You'll see something like

<Directory "/Users/marvo/Sites/">     Options Indexes MultiViews      AllowOverride None     Order allow,deny     Allow from all </Directory> 

g) Add the "FollowSymLinks" option so that the second line of that .conf file looks like:

Options Indexes MultiViews FollowSymLinks 

(You can find other configuration options out there on the 'net. I found this page: http://httpd.apache.org/docs/2.0/mod/core.html#directory )

h) Save the file.

Now you have to restart Apache so that it picks up the configuration change. Googling around a bit, I found that this is most easily done from the command line with the following command:

sudo /usr/sbin/apachectl restart 

(Found that at http://mcapewell.wordpress.com/2006/09/22/restart-apache-in-mac-os-x/ )

Now that symbolic link should work just fine on your Sites pages.

like image 160
Marvo Avatar answered Oct 11 '22 15:10

Marvo


Had the same issue. Unfortunately, Marvo's answer wasn't enough.

The problem lies with the permissions set on every folder in the path, starting from ~/. The directories needs the execute flag set to be able to recurse the directory tree. So, in my case, I symlinked a theme folder from ~/Dropbox/projects/theme to a wordpress install on ~/Site/wordpress.

The answer was:

chmod a+x ~/Dropbox/ chmod a+rx ~/Dropbox/projects 

This is an old issue, but if anyone reaches this page, it might be useful. :)

like image 27
agarie Avatar answered Oct 11 '22 14:10

agarie