JuliusAlexanderIV
JuliusAlexanderIV

Reputation: 51

Change Apache rootdir to symlink, getting 403 Error

I'm new to .php and servers and all this craziness (and StackOverflow) but I've downloaded Apache and I'm trying to symlink a PHP code folder to the Apache root directory. My Apache root was var/www/html and my PHP code folder is Documents/PHPStuff. I renamed var/www/html to var/www/html2 and I made a symlink in var/www/ called 'html' which links to Documents/PHPStuff, thinking if I renamed the symlink to the name Apache is looking for then it would work.

It doesn't.

When I try to access my test file in Documents/PHPStuff called 'helloworld2.php' in my browser with 'localhost/helloworld2.php' I get a 403 Forbidden Error.

I've been messing with permissions on the symlink and in the PHPStuff directory, changing them to 777 and stuff but it hasn't worked. I also changed my httpd.conf file by changing FollowSymlinks None to FollowSymlinks All. Nothing has worked yet so this was my last resort.

Upvotes: 1

Views: 4478

Answers (3)

Nadine
Nadine

Reputation: 1638

You need to make sure apache has access to the folder that the symlink is pointing to, try running:

chmod a+x /home/your-username /home/your-username/Documents/PHPStuff

Upvotes: 0

kaleemsagard
kaleemsagard

Reputation: 723

Try to don't touch your http.conf. Instead, edit files from conf.d path.

To grant access to your home paths, edit your /etc/http/conf.d/userdir.conf to activate user dir option, like:

<IfModule mod_userdir.c>
  #UserDir disabled
  UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
  AllowOverride All
  Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
  Require method GET POST OPTIONS
</Directory>

then, restart your apache.

Now, you have to create a directory /home/$USER/public_html and create into it the symlink to your ~/PHPStuff, like

ln -s ~/PHPStuff ~/public_html/PHPStuff

You can move PHPStuff to ~/public_html/ instead create the symlink.

Ensure that your homedir have 711 permissions, public_html have 755 and the dirs and files inside PHPStuff are readable by everyone.

Finally, type into your web browser

http://localhost/~user ('user' is your system username)

and you will see your PHPStuff listed. You can type

http://localhost/~user/PHPStuff

to view the PHPStuff content directly.

Good luck!

Upvotes: 1

0xMatt
0xMatt

Reputation: 199

You shouldn't need to do all of that.

This is how I set up my symlinks.

When I install apache, it's web directory is located at /var/www/html which doesn't really need to be changed.

Then, I create a folder called public_html, you can call it PHPStuff, doesn't matter. What matters is that the folder is inside your home directory, so /home/your_username/PHPStuff

Then link that directory to /var/www/html

sudo ln -s ~/PHPStuff /var/www/html/$USER

You can then access ~/PHPStuff by going to your browser, and typing:

http://localhost/your_username

Which will give you access to ~/PHPStuff

After you do that, set proper permissions:

sudo chmod -R 777 ~

Then make sure apache allows symlinks by going to /etc/httpd/conf/httpd.conf and editing this portion Directory "/var/www/html"

And make sure you have these:

Options Indexes FollowSymLinks
AllowOverride All

Restart apache and everything will work.

Upvotes: 0

Related Questions