ich habe eine Verzeichnisstruktur auf einem anderen Rechner im gleichen
Netzwerk, die ich gerne mit PHP auslesen und auf einer Webseite ausgeben
mᅵchte. Beide Rechner (entfernter und Webserver) sind Windows 2003
Server. Die Share wᅵre:
\\foreignhost01\dokumente
Nun versuche ich folgendes Skript:
-------------- snip --------------------
$directory = "file://foreignhost01/dokumente";
//$directory = "./files/";
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo $file;
}
}
closedir($handle);
}
------------- snap ----------------------
mit folgendem Ergebnis:
Warning: opendir() [function.opendir]: remote host file access not supported
Die zweite im Beispielcode auskommentierte Zeile auf das lokale
Verzeichnis funktioniert ohne Probleme, wenn ich sie auskommentiere.
Kann man das irgendwie einstellen bzw. wie kann ich per PHP
Verzeichnisstrukturen von Netzwerkrechner abfragen?
Danke fᅵr alle Antworten.
Dann lass einfach das "file:" weg.
BTW:
Der Process der das PHP Skript ausführt, braucht natürlich Zugriffsrechte
auf die Share.
Gruß,
Carsten
Mittlerweile habe ich dem Prozess, auf dem das Skript lᅵuft, einem User
mit Domᅵnen Admin Rechten zugeordnet. Auch die Sicherheitstechnische
Kamikazeaktion war ohne Erfolg. Jetzt kommt immer die Fehlermeldung:
[function.opendir]: failed to open dir: No error in
//foreignhost01/dokumente
Wenn ich die Meldung richtig verstehe, lᅵuft das Skript aber der Zugriff
scheitert. Was kᅵnnte ich noch falsch machen?
Hm, gute Frage. Dann würd ich halt mal das in der Shell nachstellen.
Zuerstmal ein:
| net view \\foreignhost01
Das sollte ja dann eine Freigabe mit dem Namen "dokumente" (und Type
"Platte") auflisten.
Dann ein:
| php -r "var_dump(opendir('//foreignhost01/dokumente'));"
Was wird da dann ausgegeben?
BTW:
Um welche PHP-Version und Webserver geht es denn?
Gruß
Carsten
net view \\foreignhost01 zeigt die Freigabe als Typ Platte an
php -r ... gibt resource(4) of type (stream) aus.
Ist PHP 5.2.10 auf einem IIS 6.0
> net view \\foreignhost01 zeigt die Freigabe als Typ Platte an
>
> php -r ... gibt resource(4) of type (stream) aus.
>
> Ist PHP 5.2.10 auf einem IIS 6.0
Ergo liegt es also daran, dass das Script vom Webserver mit einem User ohne
Rechte auf diese Ressource ausgeführt wird.
Macht aus Sinn, da normal eine Website beim IIS (Anonymer Zugriff) mit dem
User IUSR_HOSTNAME ausgeführt wird, der überhaupt keinen Netzwerkzugriff
hat. Eben diesen muss man ändern auf einen User mit Zugriff auf die Share.
Im Zweifel würd ich einfach mal bei z.B. http://forums.iis.net/ nachfragen.
(oder eine passende Newsgroup zu diesem Server)
Gruß
Carsten
Vielen Dank fᅵr die tolle schnelle Hilfe.
Thomas