Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

openDir auf Netzwerkrechner

0 views
Skip to first unread message

Thomas Weiler

unread,
Dec 3, 2009, 5:08:01 AM12/3/09
to
Hallo,

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.

Carsten Wiedmann

unread,
Dec 3, 2009, 5:20:55 AM12/3/09
to
Thomas Weiler schrieb:
> Server. Die Share wäre:

>
> \\foreignhost01\dokumente
>
> Nun versuche ich folgendes Skript:
>
> -------------- snip --------------------
>
> $directory = "file://foreignhost01/dokumente";
>
> Warning: opendir() [function.opendir]: remote host file access not
> supported

Dann lass einfach das "file:" weg.

BTW:
Der Process der das PHP Skript ausführt, braucht natürlich Zugriffsrechte
auf die Share.

Gruß,
Carsten

Thomas Weiler

unread,
Dec 9, 2009, 9:17:17 AM12/9/09
to
Carsten Wiedmann schrieb:
> Thomas Weiler schrieb:
>> Server. Die Share wᅵre:

>>
>> \\foreignhost01\dokumente
>>
>> Nun versuche ich folgendes Skript:
>>
>> -------------- snip --------------------
>>
>> $directory = "file://foreignhost01/dokumente";
>>
>> Warning: opendir() [function.opendir]: remote host file access not
>> supported
>
> Dann lass einfach das "file:" weg.
>
> BTW:
> Der Process der das PHP Skript ausfᅵhrt, braucht natᅵrlich Zugriffsrechte
> auf die Share.
>
> Gruᅵ,
> Carsten
>
Hab ich gemacht. Leider ohne Erfolg.

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?

Carsten Wiedmann

unread,
Dec 9, 2009, 9:38:21 AM12/9/09
to
Thomas Weiler schrieb:

>>> $directory = "file://foreignhost01/dokumente";
>>>
>>> Warning: opendir() [function.opendir]: remote host file access not
>>> supported
>>
>> Dann lass einfach das "file:" weg.
>>
>> Der Process der das PHP Skript ausführt, braucht natürlich Zugriffsrechte
>> auf die Share.
>>
> Hab ich gemacht. Leider ohne Erfolg.
>
> 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

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

Thomas Weiler

unread,
Dec 9, 2009, 10:06:38 AM12/9/09
to
Carsten Wiedmann schrieb:

> Thomas Weiler schrieb:
>>>> $directory = "file://foreignhost01/dokumente";
>>>>
>>>> Warning: opendir() [function.opendir]: remote host file access not
>>>> supported
>>> Dann lass einfach das "file:" weg.
>>>
>>> Der Process der das PHP Skript ausfᅵhrt, braucht natᅵrlich Zugriffsrechte

>>> auf die Share.
>>>
>> Hab ich gemacht. Leider ohne Erfolg.
>>
>> 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
>
> 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

Carsten Wiedmann

unread,
Dec 9, 2009, 10:23:12 AM12/9/09
to
Thomas Weiler schrieb:

> 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

Thomas Weiler

unread,
Dec 9, 2009, 10:56:16 AM12/9/09
to
Carsten Wiedmann schrieb:

> Thomas Weiler schrieb:
>
>> 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
Habs gefunden. Es lag am Admin, der nicht an allen wichtigen Schrauben
gedreht hat ;). Hab zwar den User fᅵr den Application Pool auf den
Domᅵnen-User geᅵndert, den fᅵr die Website direkt aber noch auf dem
Anonymous User gelassen. Jetzt klappt der Zugriff.

Vielen Dank fᅵr die tolle schnelle Hilfe.

Thomas

0 new messages