Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zugriff auf Verzeichnis auf anderer Windows-Partition

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Zugriff auf Verzeichnis auf anderer Windows-Partition

    Hallo zusammen,
    ich bin gerade dabei eine Web-Applikation mit php und mssql zu schreiben.
    Funktioniert soweit auch ganz gut, aber ein Problem habe ich.

    Auf unserem Windows-Server 2008 haben wir den IIS-7 Webserver laufen, mit php 5.3. Er läuft unter C:/inetpub.

    Bilder die in der Applikation gezeigt werden sollen allerdings von einer anderen Festplatten-Partition (D:/Daten/images) geladen werden.
    Mein Problem ist, dass ich nicht auf D:/Daten/images zugreifen kann. Ich bekomme immer den Fehler "No such file or directory" wenn ich z.B. mit scandir versuche darauf zuzugreifen.

    Ich habe diese Frage schon in einem anderen Forum gestellt (link dahin), und alle Lösungsvorschläge probiert, komme aber immer noch nicht weiter.

    Hier die Kurzfassung:
    -Der PHP-Benutzer ist IUSR und gehört, nehme ich an, zur Gruppe IIS_IUSRS. Diese Gruppe hat lese/schreib/änder –Rechte auf D:/, D:/Daten und D:/Daten/images, wo die Bilder liegen.
    -Ich habe im IIS (C:/inetpub/webroot/applikation) einen virtuellen Ordner (daten) erstellt, der den physikalischen Ort D:/Daten/images hat. Auch auf den kann ich nicht zugreifen, es kommt derselbe Fehler.
    -Zugriff einmal über den virtuellen Ordner (daten) C:/inetput/webroot/applikation/daten und einmal wie vorgeschlagen direkt (D:/Daten/images)

    Das ist die test.php (liegt direkt im root, wie der virtuelle Ordner daten)
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    $erg=scandir('daten');
    print_r($erg);

    $array=scandir('D:/Daten/images');
    print_r($array);
    ?>
    Ich hoffe einfach dass hier noch andere Personen die Frage lesen und vielleicht noch weitere Ideen haben.
    Vielen Dank schonmal!!

  • #2
    PHP-Scripte im IIS sollten nur auf Verzeichnisse / Dateien zugreifen können auf der auch der IIS-User zugriff hat. Übers web erreichbar machen kannst du verzeichnisse außerhalb deines DocRoots indem du diese als Virtuelle Verzeichnisse Importierst.

    http://support.microsoft.com/kb/172138

    Bedenke das diese ( bevor solche ) gelesen oder beschrieben werden können, es zwingend erforderlich ist ( rekursiv ) dem IIS-User die entsprechenden Lese-/Schreib-Rechte zuzuweisen. Damit du danach auch entsprechend mit PHP darauf zugreifen kannst. Wichtig ist hier zu beachten das PHP zwar im Webserver-Kontext läuft, aber die Dateisystem-Sensitiven Methoden ebend nicht auf eventuell virtuell erzeugte Verzeichnisse zurückgreifen sondern den tatsächlichen Pfad nutzen müssen.

    http://stackoverflow.com/questions/6...ctory-on-iis-7
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Zitat von tr0y Beitrag anzeigen
      PHP-Scripte im IIS sollten nur auf Verzeichnisse / Dateien zugreifen können auf der auch der IIS-User zugriff hat. Übers web erreichbar machen kannst du verzeichnisse außerhalb deines DocRoots indem du diese als Virtuelle Verzeichnisse Importierst.

      http://support.microsoft.com/kb/172138
      Ich hab jetzt nochmal die Grundeinstellungen von dem Virtuellen Verzeichnis wie bei obigem Link beschrieben getestet. Bei Verbindung testen ist bei der Autorisierung ein gelbes Ausrufezeichen mit "Der Zugriff auf den Pfad (D:\Daten\images) kann nicht überprüft werden." mit folgenden Details:

      "Der Server ist so konfiguriert, dass zum Zugriff auf den angegebenen physikalischen Pfad die Pass-Through-Authentifizierung mit einem vordefinierten Konto verwendet wird. IIS-Manager kann jedoch nicht überprüfen, ob das vordefinierte Konto Zugriff hat. Stellen Sie sicher, dass die Identität des Anwendungspools Lesezugriff auf den physikalischen Pfad hat. Wenn der Server mit einer Domäne verbunden ist und die Identität des Anwendungspools "NetworkService" oder "LocalSystem" ist, stellen Sie sicher, dass <domäne>\<computername>$ Lesezugriff auf den physikalischen Pfad hat. "

      Der verwendete PHP-User hat allerdings, zumindest im Moment noch, komplette Rechte für die komplette D-Partition.

      Kommentar


      • #4
        sagt Dir
        \xampp\apache\logs\error.log

        irgendwas über "Zugriff verweigert" oder so ?

        @tr0y

        ok, hast recht, war nen griff ins Klo

        Kommentar


        • #5
          Zitat von moma Beitrag anzeigen
          sagt Dir
          \xampp\apache\logs\error.log

          irgendwas über "Zugriff verweigert" oder so ?
          Das ist nen IIS, Scherzkeks.

          @TE:

          Stell mal fest ob PHP einen User verwendet der auch wiklich im Pool der lokalen System-Konten existiert.
          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

          Kommentar


          • #6
            get_current_user() gibt IUSR zurück.
            Den gibt es nicht als Systembenutzer. Aber brauche ich den als Systembenutzer oder reicht es, wenn es die IIS_IUSRS Gruppe gibt und ich der die Rechte gebe?

            Kommentar


            • #7
              Öffne mal die WMI-Konsole auf dem Server via: Windows-Taste + R -> "wmic" eingeben und enter drücken

              dort folgendes Query ausführen:
              Code:
              sysaccount where "name like 'iusr'" get /value
              Du solltest dort folgendes equivalent zu deinem System angezeigt bekommen:
              Code:
              Caption=TR0Y-PC\IUSR
              Description=TR0Y-PC\IUSR
              Domain=TR0Y-PC
              InstallDate=
              LocalAccount=TRUE
              Name=IUSR
              SID=S-1-5-17
              SIDType=5
              Status=OK
              Alternativ ( damit du dir mit Copy und Paste nicht die Finger brichst ) kannst du die ausgabe danach auch gerne mal hier posten indem du sie ins clipboard routest:
              Code:
              /output:clipboard sysaccount where "name like 'iusr'" get /value
              Sollte dort "Keine Instanzen verfügbar" als resultat kommen, ist dein IIS wahrscheinlich fehlerhaft installiert.
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar


              • #8
                Also bei mir kommt genau dasselbe raus, nur eben eine andere Domain.

                Kommentar


                • #9
                  Dann existiert der auch.

                  Schau mal in die IIS-Administration ob dort bei dem Virtuellen Verzeichnis für deine "IIS-externe Partition" ob dort bei dem Ordner entsprechend die Anonymous Authentification aktiviert ist und ob dort der User "IUSR" als Identität / User-Account hinterlegt ist.
                  [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                  Kommentar


                  • #10
                    beim virtueleln Verzeichnis ist die anonyme authentifizierung aktiviert und als identität des anonymen benutzers der IUSR festgelegt.
                    Also alles wie es sein soll.

                    Kommentar


                    • #11
                      Und wie schaut die Berechtigungsvergabe in dem Zielverzeichnis aus ?

                      Zum lesen, backupen und verändern von spezifischen Rechten kannst du das ICACLS-Dienstprogramm nutzen:
                      http://technet.microsoft.com/de-de/l...(v=ws.10).aspx
                      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                      Kommentar


                      • #12
                        Die Gruppe IIS_IUSRS hat volle Zugriffsrechte rekursiv auf das Verzeichnis. Also D:/, D:/Daten und D:/Daten/images

                        Kommentar


                        • #13
                          Dort den IUSR-User hinzufügen, in den Eingeschaften unter sicherheit:

                          Erweitert -> im Tab Berechtigungen: Berechtigung ändern... -> Hinzufügen -> Erweitert -> Jetzt suchen ...

                          Aus der in dem Fenster resultierenden Liste den "IUSR" auswählen -> Ok -> Ok -> Rechte einstellen + "Übernehmen für" auf "Diesen Ordner, Unterordner und Dateien" stellen -> [ rest mit Ok bestätigen ]
                          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                          Kommentar


                          • #14
                            WOW, es geht!!!!
                            DANKE DANKE DANKE!!!

                            Es hat wohl einfach daran gelegen, dass ich immer nur Rechte für die Gruppe IIS_IUSRS vergeben habe aber nicht dem Benutzer IUSR selbst.

                            Nochmal Danke!!!

                            Kommentar


                            • #15
                              You're welcome.
                              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                              Kommentar

                              Lädt...
                              X