Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Virtuelle Verzeichnisse unter IIS mit PHP ansprechen

Hallo,
ich habe hier auf einem Win2003 Server einen IIS laufen und bin dort gezwungen mit virtuellen Verzeichnissen zu arbeiten. Klappt soweit auch sehr gut, nur sobald ich mit PHP auf ein virtuelles Verzeichnis zugreifen möchte (egal ob lesend oder schreibend), bekomm ich nur eine Fehlermeldung, dass das gewünschte Verzeichnis nicht existiert.

Was muss ich nun tun, damit ich auch mit PHP auf die gewünschten Verzeichnisse zugreifen kann?

Danke schonmal für eure Hilfe!

Hier gehts zum Orginal Eintrag "Virtuelle Verzeichnisse unter IIS mit PHP ansprechen" im Forum

Antworten

Zitat:
virtuelles Verzeichnis
Darf ich mal fragen, was das, in diesem Zusammenhang, bedeutet?


2.

Zitat:
combie postete
Zitat:
virtuelles Verzeichnis
Darf ich mal fragen, was das, in diesem Zusammenhang, bedeutet?
ein virtuelles Verzeichnis kann im IIS angelegt werden. Damit wird es ermöglicht, ein Verzeichnis anzusprechen, was ausserhalb der wwwroot liegt, oder auf einem anderen Server o.Ä.
Bilder und normale HTML-Seiten werden ohne Probleme über das virtuelle Verzeichnis gefunden und angezeigt aber PHP meint, das Verzeichnis existiert nicht.


3.

Nur um meine Situatiion festzuhalten: ich artbeite schon seit mehreren Jahren mit PHP/IIS und habe allerhand Erfahrung gesammelt. Das Problem betrifft bei mir derzeit drei verschiedene Projekte, wo ich die virtuellen Verzeichnisse auf unterschiedliche Art und Weise benutzen muss. Ein kleiner "Schusselfehler" o.Ä. kann ausgeschlossen werden, es ist wohl ein tiefgründigeres Problem. :-(


4.

Tja... der iis ist mir nicht so bekannt, deswegen begebe ich mich jetzt mal aufs Glatteis....

*vermutung*
Die "virtuellen Verzeichnise" sind dem Web server sehr wohl bekannt!
Auch dort liegende PHP-Scripte werden ausgeführt!!

Allerdings bei einem include, fopen oder vergleichbarem gilt der Kontext des Scriptes und nicht der Kontext des
Webservers! Und wie du schon so treffend bemerktest, diese Verzeichnisse gibt es so nicht!
Von daher wirst du das Verzeichnis absolut angeben müssen also G:/xxxx/yyyy oder //Server/xxxx/xxx


5.

Zitat:
combie posteteVon daher wirst du das Verzeichnis absolut angeben müssen also G:/xxxx/yyyy oder //Server/xxxx/xxx
Sowas in die Richtung hab ich schon fast vermutet. Das ist allerdings leider auch keine Lösung, mit der ich arbeiten kann. Ich brauche dabei wirklich die virtuellen Verzeichnisse, alles andere ist zu aufwändig.

Danke erstmal für deinen Rat, aber ich hoffe, dass jemand noch eine bessere Lösung kennt... :-|


6.

Zitat:
aber ich hoffe, dass jemand noch eine bessere Lösung kennt... :-|
Du könntest evtl die iis Konfiguration mit PHP auslesen und dann dementsprechend
im Script reagieren.

Was anderes wirds nicht geben!
Ist beim Apache genau das gleiche Problem!


7.

Definiere deine Virtuellen Verzeichnisse in einem Configfile mit dem absoluten Pfad.
Dann kannst du im script auf deine virtuellen verzeichnisse zugreiffen, indem du auf die variable des configfiles zugreiffst.

Code:                   In Zwischenablage kopieren (nur IE)
1">




8.

Vielen Dank erstmal für die schnellen und ausführlichen Antworten. Ich werd das wohl erstmal auf diese Art machen müssen. Leider :-(

Wenn irgendjemand noch eine besser Möglichkeit findet, soll er das bitte hier melden.

Vielen Dank


9.

Kann es sein, dass es weniger an den virtuellen Verzeichnissen liegt sondern eher daran, dass es sich um gemappte Laufwerke im Netzwerk handelt? Dort sind nämlich einige Probleme im Zusammenhand mit Windows bekannt.

Ansonsten ist der Begriff "virtuelle Verzeichnisse" für Apache-Anwender etwas verwirrend - vielleicht gibst mal ein konkretes Beispiel statt einer allgemeinen Beschreibung. Ich kenne sog. "Alias" und sog. "Virtuelle Hosts" - aber nicht virtuelle Verzeichnisse.


10.

Ja ja, die Helden aus dem Reich WinzigWeich haben ihr eigenes Vokabular, da machste nix dran.....

Er meint wohl das Äquivalent zu sowas:
Code:                   In Zwischenablage kopieren (nur IE)
2">

:)


11.

Es hat nicht unbedingt was mit gemappten Laufwerken zu tun. Hier mal ein Beispiel eines Projektes von mir:

wwwroot meines IIS mündet in D:/Daten/Kunden
Unter Kunden habe ich jetzt folgendes Verzeichnis /KundeX/Web/ProjektX/

würde als URL so aussehen: http://localhost/KundeX/Web/ProjektX

Ich benötige aber (bitte nicht nachfragen warum, ist einfach so ;-)) http://localhost/ProjektXY/ (also Virtuelles Verzeichnis in der root anlegen, mit Namen "ProjektXY" und Verweis auf den Ordner D:/Daten/Kunden/KundeX/Web/ProjektX/.

Jetzt könnte ich natürlich einfach den Ordner des Projektes in die wwwroot verschieben, was aber gegen meine Ordnerstruktur, die ich in jedem Fall einhalten muss, verstösst.

Das ist eins meiner drei Anwendungsbeispiele. Und wenn das schon nicht geht, dann funzen auch die beiden anderen Projekte nicht so, wie ich es brauch.

Hoffe, ihr konntet mir einigermaßen folgen... :.)


12.

Zitat:
Ich benötige aber (bitte nicht nachfragen warum, ist einfach so ;-)) http://localhost/ProjektXY/ (also Virtuelles Verzeichnis in der root anlegen, mit Namen "ProjektXY" und Verweis auf den Ordner D:/Daten/Kunden/KundeX/Web/ProjektX/.
Das nennt sich bei der bekanntesten, besten und mit Abstand am meisten verbreiteten Webserver-Software ein "Alias".

Das physikalische Verzeichnis (für PHP) ist selbstverständlich nun d:/Daten/Kunden/KundeX/Web/ProjektX - dazu hätte ich gerne das Beispiel, welches "nicht funktioniert".


13.

Zitat:
Rana postete
Das nennt sich bei der bekanntesten, besten und mit Abstand am meisten verbreiteten Webserver-Software ein "Alias".
Mag sein, dass Apache besser ist aber ich kann hier leider nicht zwischen IIS und Apache wählen... :-(

Mein oben genanntes Beispiel funktioniert nicht, wenn ich versuche per require die Datei ('/ProjektXY/main/code.php') reinzuladen. Da meint PHP "Verzeichnis existiert nicht".


14.

von wo aus versuchst du die datei zu includen?
EDIT: Ah, und nochwas: Probiers mal ohne vorangestellten slash.......


15.

Zitat:
bieler postete
von wo aus versuchst du die datei zu includen?
EDIT: Ah, und nochwas: Probiers mal ohne vorangestellten slash.......
Es ist vollkommen egal, von wo aus ich die Datei includen möchte. Fakt ist, sobald ich eine Datei aus einem virtuellen Verzeichnis/Alias includen möchte (z.b. /ProjektXY/test.php) kommt die Meldung "Ordner oder Datei existiert nicht".
Rufe ich aber per http://localhost/ProjektXY/test.php die Seite auf, wird sie korrekt dargestellt.


16.

und hast du den ersten slash mal weggelassen? Ein include vom document-Root aus auf "/ProjektXY/test.php" endet bei mir auch in einer Fehlermeldung, das verzeichnis existiere nicht, und dies liegt ganz einfach am vorangestellten Slash.


17.

Nochmal, zum mitmeißeln:
Deine virtuellen Verzeichnisse stellst du im IIS ein.
Davon bekommt PHP nichts mit!
PHP reitet auf dem "nativen" Dateisystem, nicht im "virtuellen"!!

Also wirst du PHP diesen Umstand händisch mitteilen müssen!

Und da gibt es allerdings verschiedenste Methoden, aber von
denen willst du ja garnichts hören!

Nichts desto Trotz, kaue ich dir die Wichtigsten mal vor:
1. Bielers Methode(funktioniert aber nur in demselben Dateisystem Ast)
2. PHP includepath erweitern
3. einen wrapper bauen: --->> include(wrapper( "/ProjektXY/test.php"));


18.

Zitat:
combie postete
Deine virtuellen Verzeichnisse stellst du im IIS ein.
Davon bekommt PHP nichts mit!
PHP reitet auf dem "nativen" Dateisystem, nicht im "virtuellen"!!

Gut, wenn das wirklich so ist, dann ist das jetzt mal ne fundierte Aussage, mit der ich leben muss.

Zitat:
combie postete
Also wirst du PHP diesen Umstand händisch mitteilen müssen!
Und da gibt es allerdings verschiedenste Methoden, aber von
denen willst du ja garnichts hören!

Das ist so nicht wahr. Wenn es wirklich nicht ohne diese manuellen Methoden geht, bin ich gern bereit, was dazuzulernen.


Zitat:
combie postete
3. einen wrapper bauen: --->> include(wrapper( "/ProjektXY/test.php"));

Das mit dem Wrapper hab ich jetzt nicht so ganz gerafft. Was soll der tun? Ist das ne einfache Funktion, die mir den angegebenen Namen durch den richtigen Pfad ersetzen soll?


19.

Zitat:
bieler postete
und hast du den ersten slash mal weggelassen? Ein include vom document-Root aus auf "/ProjektXY/test.php" endet bei mir auch in einer Fehlermeldung, das verzeichnis existiere nicht, und dies liegt ganz einfach am vorangestellten Slash.
Ja, habe ich. Mit "../../ProjektXY/test.php" geht es auch nicht.

Wenn ich das dagegen ohne Alias mache sondern mit richtigen Ordnern funzt es.


20.

Zitat:
Das mit dem Wrapper hab ich jetzt nicht so ganz gerafft. Was soll der tun? Ist das ne einfache Funktion, die mir den angegebenen Namen durch den richtigen Pfad ersetzen soll?
Jawoll! Ja!


21.

du musst natürlich im wrapper den namen extrahieren und auswerten, damit du weisst, wohin du leiten sollst.
Du kannst ihn so schreiben, wie ich beschrieben hab, mit allerdings der beschränkung, die dir combie gesagt hat. oder aber du schreibst ihn so, dass wirklich jeder links auf das richtige virtuelle verzeichnis zugreifft.....kannst dir selbst lieb sein :)


22.

Zitat:
Wenn ich das dagegen ohne Alias mache sondern mit richtigen Ordnern funzt es.
Na also - und es geht so und nur so. Ist doch selbstverständlich - PHP weiß nichts von Deinen virtuellen Ordnern. Du mußt echte(!) Pfade in PHP verwenden.

Die Wrapper-Geschichten brauchst Du nicht, was würden die Dir nutzen? Von außen sieht nach wie vor NIEMAND, dass es diese realen Verzeichnisse gibt, die Du in PHP angeben MUSST(!). Was also ist Deine Sorge?


23.

Zitat:
Rana postete
[quote]Die Wrapper-Geschichten brauchst Du nicht, was würden die Dir nutzen? Von außen sieht nach wie vor NIEMAND, dass es diese realen Verzeichnisse gibt, die Du in PHP angeben MUSST(!). Was also ist Deine Sorge?
Ich mach mir keine Sorge, dass jemand die Verzeichnisse sieht. Ich wollte die wwwroot-Struktur meines IIS nur so aufbauen, wie ich sie brauche, ohne mein eigentliches Dateisystem auf meinem Rechner umordnen zu müssen. In einem anderen Fall wollte ich mit so einem virtuellen Verzeichnis auf einen anderen Server verweisen.


Hier gehts zum Orginal Eintrag "Virtuelle Verzeichnisse unter IIS mit PHP ansprechen" im Forum
 
phpforum.de | Impressum | Handy Bundles