Das Problem: ein symbolischer Link aus /var/www/ nach /home/user1/foo/ funktionierte nicht. Links aus aus /var/www/ nach /var/www/foo/ funktionierten. Die Option »FollowSymLinks« war für /var/www/ korrekt gesetzt. Symptom des Fehlers: »[error] [client 127.0.0.1] Symbolic link not allowed or link target not accessible: /var/www/home-jipakiza« in /var/log/apache2/error.log.
Lösung: symbolische Links werden nicht verfolgt wenn sie aus dem DocumentRoot-Verzeichnis des Webservers hinausführen. Das geschieht aus Sicherheitsgründen. Siehe: http://www.quotesdb.info/undernet/linuxhelp/15Aug2006/1.html
Um über den Webserver dennoch auf das Verzeichnis zugreifen zu können das eigentlich Ziel des symbolischen Links sein sollte kann man entweder einen neuen Virtual Host aufsetzen oder aber eine »Alias«-Direktive in der Konfiguration des aktuellen Virtual Hosts verwenden, ggf. zusammen mit einer »Directory«-Direktive:
Alias /foo/ "/home/user1/bar/"
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
Tritt dann ein Fehler »(13)Permission denied:« auf so liegt das möglicherweise an Zugriffsberechtigungen: alle Verzeichnisse auf dem Weg müssen für den Benutzer unter dem der Apache-Serverprozess läuft ausführbar sein (das heißt: wenn man den Namen einer Datei in diesem Verzeichnis kennt darf man sie lesen, aber Verzeichnisauflistungen selbst sind damit nicht möglich sondern über die Leseberechtigung). Für eine weitere Möglichkeit für diesen Fehler siehe: http://defindit.com/readme_files/apache_13_error.html .
Diese Lösung hat jedoch noch das Problem dass Scripts von mod_suphp nicht ausgeführt werden wenn sie in Verzeichnissen außerhalb DocumentRoot gespeichert sind. (Mit mod_php5 werden diese allerdings genausogut ausgeführt). Dieser Fehler tritt im Browser als »500 Internal Server Error« auf und im Error Log als »SoftException in Application.cpp:199: Script […] not within configured docroot«.
Leave a Reply