Windows Server 2008, PHP, IIS und die Rechte
ein php-script soll den Ordnerinhalt auslesen, hat aber anscheinend keine Berechtigung dafür
Hallöle,
ich bekomm es irgendwie nicht mit den Rechten gebacken - tut mir leid.
Also, als erstes habe ich ein simples PHP-Skript, welches im Ordner "D:\InetPub\vhosts\blabla.de\httpdocs" liegt.
Das Skript soll einfach nur einen Ordner auf erster Ebene auslesen und den inhalt auflisten:
In dem Ordner "D:\InetPub\vhosts\blabla.de\httpdocs", wo das Skript drin liegt, klappt alles wunderbar, auch die website selbst. Also ich geb als $Pfad "D:\\InetPub\\vhosts\\blabla.de\\httpdocs" an und er listet alles auf.
Wenn ich allerdings ein "externes" Verzeichnis durchforsten will, z.B. "D:\Temp\BAK", streikt das skript und spuckt mir die Fehlermeldung "D:\Temp\BAK do not exist" aus.
Ich habe auf das Verzeichnis "D:\Temp\BAK" auch schon für "Jeder" Vollzugriff gegeben, klappt nicht. =/
Lokal mit meiner Anmeldung als admin klappt es aber.
Ich weiß nicht weiter, hoffentlich jemand von Euch - Dankeschön schonmal! =))
LG, Nira
Hallöle,
ich bekomm es irgendwie nicht mit den Rechten gebacken - tut mir leid.
Also, als erstes habe ich ein simples PHP-Skript, welches im Ordner "D:\InetPub\vhosts\blabla.de\httpdocs" liegt.
Das Skript soll einfach nur einen Ordner auf erster Ebene auslesen und den inhalt auflisten:
<?php
$pfad = "D:\\Temp\\BAK";
$ausgabe = @opendir($pfad) or die("$pfad do not exist");
while ($datei = readdir($ausgabe))
{
if(($datei != ".") and ($datei != "..")){
echo "<a href=\"$datei\">$datei</a><br>";
}
}
closedir($ausgabe);
?>
In dem Ordner "D:\InetPub\vhosts\blabla.de\httpdocs", wo das Skript drin liegt, klappt alles wunderbar, auch die website selbst. Also ich geb als $Pfad "D:\\InetPub\\vhosts\\blabla.de\\httpdocs" an und er listet alles auf.
Wenn ich allerdings ein "externes" Verzeichnis durchforsten will, z.B. "D:\Temp\BAK", streikt das skript und spuckt mir die Fehlermeldung "D:\Temp\BAK do not exist" aus.
Ich habe auf das Verzeichnis "D:\Temp\BAK" auch schon für "Jeder" Vollzugriff gegeben, klappt nicht. =/
Lokal mit meiner Anmeldung als admin klappt es aber.
Ich weiß nicht weiter, hoffentlich jemand von Euch - Dankeschön schonmal! =))
LG, Nira
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 134464
Url: https://administrator.de/forum/windows-server-2008-php-iis-und-die-rechte-134464.html
Ausgedruckt am: 23.12.2024 um 16:12 Uhr
10 Kommentare
Neuester Kommentar
"Jeder" Vollzugriff auch für D:\Temp (Vererbung)? Der IIS läuft normalerweise als IUSR_COMPUTERNAME. Diesem User musst du die entsprechenden Rechte geben.
Zitat von @Norrodar:
ha! wunderbar, es klappt! =)
Aber hat jetzt nicht "Jeder" auch zugriff auf "D:\Temp"? das soll nicht und darf nicht, darf nur
"D:\temp\BAK\" einsehbar sein.
ha! wunderbar, es klappt! =)
Aber hat jetzt nicht "Jeder" auch zugriff auf "D:\Temp"? das soll nicht und darf nicht, darf nur
"D:\temp\BAK\" einsehbar sein.
Deswegen immer den IUSR verwenden!
Kann sein. Du kannst natürlich den Zugriff einschränken, indem du nur den lokalen oder Domänen-Benutzern das Leserecht auf dieses Verzeichnis gewährst. Allerdings musst dann auch die Windows-Authentifizierung im IIS für dieses Verzeichnis einschalten. Siehe hier: http://support.microsoft.com/kb/324276/de
Du kannst bei den anderen Unterordnern die Vererbung von "oben", also d:\temp, deaktivieren. Bei einem Temp-Verzeichnis macht es aber keinen Sinn, da dort ständig irgendwelcher Müll abgelegt wird. Wie wäre es mit d:\BAK?
Versuche es über eine Freigabe. Also alle Berechtigungen rückgängig machen, d:\temp\bak als bak freigeben und die entsprechenden Berechtigungen einstellen: Auf der NTFS-Ebene dem IUSR für d:\temp\bak das Leserecht geben (ohne die Vererbung von oben abzuschalten) und auf der Freigabe-Ebene dasselbe (Jeder entfernen).
$pfad = "D:\\Temp\\BAK"; müssten dann halt $pfad = "\\\servername\\bak"; heißen.
$pfad = "D:\\Temp\\BAK"; müssten dann halt $pfad = "\\\servername\\bak"; heißen.