Apache/PHP + SymLink -> Forbidden

martinibook

martinibook

Aktives Mitglied
Thread Starter
Dabei seit
20.08.2005
Beiträge
8.730
Reaktionspunkte
350
Hallo,

Ich habe nun meine Bilderdatenbank auf mein iBook übertragen. Ich habe die PHP-Skripte in ibook.local/~martin/ liegen und kann auch auf die MySQL Datenbank zu greifen. Soweit eigentlich alles normal.

Da ich nur eine 30gb Festplatte und schon über 10gb Bilder habe, habe ich die Bilder auf meine USB Platte kopiert und über das Terminal symbolisch verlinkt.

In den PHP-Skripte kommt getimagesize und filesize zum Einsatz. Diese Funktionen können dem SymLink problemlos folgen und es werden die richtigen Daten angezeigt. Die Bilder an sich werden jedoch nicht an gezeigt. Als ich dann "Bild in neuem Tab öffnen" gewählt habe, um die Fehlermeldung zu sehen, sah ich "You don't have permission to access /~martin/PHP-Programme/bilderdb/bestand/2006-04-16/128/PICT1232.jpg on this server." Dieser Pfad wird aus den Daten in der Datenbank zusammengebaut. Da allerdings die Datei gefunden, aber verboten ist, ist der Pfad anscheinen korrekt.

Die Rechte habe ich an allen Stellen auf 777 gestellt, allerdings kommt die Meldung immer noch. Ich glaube, dass der Apache zwar das PHP Modul durchlässt, allerdings selbst nicht den Link auflöst und die Dateien ausgibt.

Was muss ich machen, damit das ganze funktioniert?
 
mhh nur ne Vermutung: versuch doch mal den Ordner "2006-04-16" bzw "128" auf 777 zu setzen
 
Wie schon gesagt, ich habe in OSX alle Rechte auf 777 gesetzt, quasi "chmod -R 777"

Also daran liegt es nicht. Ich kopiere die Daten jetzt auf meinen Debainserver, da da die eingebaute Platte ausreichend groß ist.

Martin
 
Sieht so aus, als würde der Apache in seiner Standard-
konfiguration Symlinks nicht folgen, weswegen du bei
"Options" noch "FollowSymLinks" hinzufügen musst.

Steht übrigens auch alles bei apache.org ;)
 
Das hier steht in meiner httpd.conf:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

Martin
 
Achso, das steht schon als Defaultwert drin :eek:
 
Ich habe es momentan auf meinem Debianserver am laufen, allerdings fände ich es auf dem iBook besser. Es scheint ja so, dass er die Datei findet, aber irgendwas nicht mit den Rechten stimmt. Aber mehr als 777 gibts ja net.

Martin
 
martinibook schrieb:
Das hier steht in meiner httpd.conf:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

Martin

die httpd.conf ist ja nun nicht das selbe wie die .htaccess für das jeweilige verzeichnis.
 
naomi_watts schrieb:
die httpd.conf ist ja nun nicht das selbe wie die .htaccess für das jeweilige verzeichnis.
ist das nicht so gemeint, dass du in der httpd.conf sagst er solle überhaupt auf symlinks reagieren und ist die .htaccess nicht sowas ? :kopfkratz:
 
"Die Direktive Options legt fest, welche besonderen Eigenschaften ein bestimmtes Verzeichnis (mitsamt seinen Unterverzeichnissen) besitzen soll. Das nähere Verhalten einiger dieser Optionen wird durch andere Direktiven geregelt; hier geht es zunächst einmal darum, ob eine bestimmte Eigenschaft grundsätzlich unterstützt werden soll oder nicht. Im Einzelnen sind folgende Optionen definiert, die Sie als Werte der Direktive angeben können:
- None. Schaltet sämtliche Optionen ab.
- Indexes. Wenn die angeforderte URL ein Verzeichnis ist, wird die mittels DirectoryIndex festgelegte Indexdatei ausgeliefert oder – falls diese nicht vorhanden ist – ein durch mod_autoindex generierter Index.
- FollowSymLinks. Symbolische Links innerhalb des Verzeichnisses werden aufgelöst – Apache liefert das entsprechende Ziel des Links aus.
- SymLinksIfOwnerMatch. Symbolische Links werden nur dann verfolgt, wenn der Eigentümer des SymLinks demjenigen der Zieldatei entspricht."

vielleicht hilft dir dies:

<Directory "/~martin/PHP-Programme/bilderdb">
Options +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
</Directory>
 
Zuletzt bearbeitet:
Ich habe das in die Conf dazugetan, und dann mit der Systemsteuerung P.WebSharing neu gestartet. Klappt immer noch nicht.

Liegt das Problem vielleicht daran, dass das außerhalb der htdocs ist?
 
Ich möchte hier an dieser Stelle das Thema nochmal aufwärmen, weil ich ein ähnliches Problem habe.

Ich habe mit php ein Gallery-Skript programmiert. In einer Config-Datei kann man nun den Pfad zum Ordner angeben, in dem die Bilder gespeichert sind (relativ). Wenn diieser Pfad dann soweit "zurückggeht", dass der Ordner ausserhalb des htdocs-Verzeichnis liegt, werden die Bilder nicht mehr angezeigt, obwohl php immernoch in der Lage ist die Dateigröße, Abmessungen etc. zu ermitteln.

Offensichtlich hat das bei mir ebenfalls mit der Apache-Konfiguration zu tun. Wenn ich den geparsden Quellcode nehme und als einfache .htm-Datei abspeicher und damit den Apache umgehe, funktionierts nämlich.

Die Frage ist also, wie bringe ich meinem Webserver bei auch mit Odnern ausserhalb von htdocs umgehen zu können.
 
Zurück
Oben Unten