PHP Rechte über /volume1/web hinaus

Status
Für weitere Antworten geschlossen.

Beatnukem

Benutzer
Mitglied seit
16. Mrz 2008
Beiträge
17
Punkte für Reaktionen
0
Punkte
0
Hallo habe folgendes Problem:

Ich habe mir ein kleines PHP Script geschrieben, welches eine dynmaische Seite generiert, in der ich über den Browser meine divx Movies angucken kann. Dazu durchsucht es den Ordner "/volume1/web/videos" und generiert aus der ordnerstrucktur ein Menü, über welches ich mir die Inhalte der Ordner angucken kann.
Das funktioniert soweit auch, nur habe ich nun folgendes Problem:

Ich will meine Videos nicht in dem Ordner "/volume1/web/videos/" ablegen, sondern in dem ordner "/volume1/videos/".

dazu habe ich alle Videos in '/volume1/videos' kopiert, und per SSH ein symlink '/volume1/web/videos/ => 'volume1/videos' erstellt. Gebe ich nun http://<ip>/videos/unterordner/film.divx im browser ein, habe ich auch zugriff auf das Video, allerdings scheitert mein PHP Script an den rechten, bzw an dem Pfad, der nun nicht mehr 'erlaubt' ist:

Rich (BBCode):
Warning: is_dir() [function.is-dir]: open_basedir restriction in effect.
File(./videos/) is not within the allowed path(s):
(/volume1/web:/volume2/web:/volume3/web:/volume4/web:/volume1/photo:/volume2/photo:/volume3/photo:/volume4/photo:/usr/syno/synoman/phpsrc:/etc:/var/run:/tmp:/var/spool/php:/volume1/@tmp/php:/var/services/web:/var/services/photo)
in /volume1/web/php/source/database.php on line 41

ich habe dann in der php.ini geschaut, ob dort eine direktive ist die die "erlaubten" pfade angibt, leider ohne ergebnis...

Jetzt meine Frage: Ist es möglich einen Pfad anzugeben, in dem PHP-Scripte ausgeführt werden dürfen?

Bin über jede Antwort dankbar!

Gruß Paul
 

billkill

Benutzer
Mitglied seit
07. Mrz 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
du musst open_basedir in der php.ini erweitern.
 

Beatnukem

Benutzer
Mitglied seit
16. Mrz 2008
Beiträge
17
Punkte für Reaktionen
0
Punkte
0
danke! ;)
hatte zwar in die php.ini geguckt, aber beim schnellen durchscrollen irgendwie übersehn.

Jetz funzt es wunderbar.
 

Beatnukem

Benutzer
Mitglied seit
16. Mrz 2008
Beiträge
17
Punkte für Reaktionen
0
Punkte
0
Mist zu früh gefreut :/

Nachdem ich die Videos in '/volume1/video/' verschoben hatte und einen Symlink '/volume1/web/video/ -> /volume1/video/' angelegt habe können die PHP Scripte nun ohne Problem die Verzeichnisse durchsuchen und das Menü wird richtig aufgebaut. Nur wenn ich ein Video starten will, bekomme ich die Fehlermeldung "403 access denied".

ab /volume1/video haben alle ordner files mod 777.
Es liegt wohl auch nicht an den Rechten, sondern an dem Symlink.

in der httpd.conf steht
Rich (BBCode):
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

Trotzdem scheitert der Apache an den SymLinks.
Habe testhalber ein Verzeichnis '/volume1/web/test/' angelegt und eine test.html hineinkopiert und dann ein SymLink '/volume1/web/test2/ -> /volume1/web/test/' angelegt.

Wenn ich im Webbrowser http://<ip>/test/test.html eingebe klappt es, über http://<ip>/test2/test.html bekomme ich den Fehler "Seite nicht gefunden".

Interessant ist dabei auch, dass wenn ich den Web Service per Synologie Management deaktiviere, und einen SymLink /usr/syno/synoman/phpsrc/web/videoportal/ -> /volume1/web/ anlege alles funktioniert, nur muss ich dann im Browser http://<ip>/videoportal/ eingeben und man kommt ohne das man den Port kennt zur Admin Page des NAS, was ich gerne vermeiden würde.

Liegt es vielleicht daran, dass der in der httpd.conf als DocumentRoot eingetragene Ordner '/var/services/web' schon ein Symlink ist?
 
Zuletzt bearbeitet:

billkill

Benutzer
Mitglied seit
07. Mrz 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Ich habe mich auch schon ein wenig mit dem installierten apachen/php geärgert weil es von synology etwas kastriert wurde. Bin nicht ganz so fit mit Linux und kenn mich auch nicht mit Symlinks.
Meine http.conf wurde auch bei jedem Neustart des Apachen frisch überschrieben. Ist deine noch im geänderten Zustand?

Die Automatische Weiterleitung kannst du verhindern indem du eine index.html Datei ins webverzeichnis legst.
 

Beatnukem

Benutzer
Mitglied seit
16. Mrz 2008
Beiträge
17
Punkte für Reaktionen
0
Punkte
0
Das mit der index.html in das web Verzeichnis ist eine gute Idee!
Die httpd.conf wird bei mir auch knallhart nach jeder Änderung im Web-Interface des NAS bzw nach Neustart überschrieben ...
Hatte testhalber mal den Pfad '/var/services/web' in 'volume1/web' umgeändert um zu testen ob es an dem "Symlink im Symlink" lag, leider wurde wie gesagt nach Neustart des Apache die conf einfach überschrieben.

Hab jetz einfach den Web-Service deaktiviert und eine index.html in den ../phpsrc/web Ornder gelegt die auf .../phpsrc/web/videoportal weiterleitet, ist zwar irgendwie eine Behilfslösung aber wenigstens funzt dann alles soweit.
 

billkill

Benutzer
Mitglied seit
07. Mrz 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Meine Lösung war übrigens ein alternativer Webserver auf der DS. gibt das Paket lighttpd das dir einen anderen Werbserver installiert. Könnte auch dir weiterhelfen. Musst halt nur schauen wie du mit den Ports klarkommst. Hab bissher nicht versucht ihn auf Port 80 zu bekommen.
 

uffti

Benutzer
Mitglied seit
10. Dez 2008
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
FollowSymlink

Mach ein .htaccess File in dem Verzeichnis.
In dem file soll drinstehen
Options +FollowSymLinks
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Und wieso machst du das mit Symlinks und nicht mittels mount --bind?
Viele Programme haben Probleme mit Symlinks, funzen aber prächtig mittels mount --bind
Code:
$ mount --bind /was/soll/gemountet/werden /wohin/soll/gemountet/werden
In deinem Beispiel würde ich es so versuchen
Code:
$ mount --bind /volume1/video/ /volume1/web/video
das würde den Inhalt von /volume1/video unter /volume1/web/video zugänglich machen.

Gruss

tobi
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat