Aus PHP auf ein SMB-Share zugreifen?

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

  • Aus PHP auf ein SMB-Share zugreifen?

    Hallo,

    ich habe jetzt ein wenig rumgesucht aber nicht klären können ob und wenn ja wie man mit PHP-Boardmitteln auf Samba-Shares (Windows-Freigaben) zugreifen kann.

    Ideal wäre natürlich eine entsprechende Protokollunterstüztung in der UNC Angabe bei fopen(). Ist soetwas nicht möglich (library?).

    Indirekt (über Shell-Mittel) gehts, aber das ist nicht unbedingt elegant :-)

  • #2
    Wie sagt man so schön: probieren geht über studieren.

    Statt rumzusuchen hättest du es auch einfach ausprobieren können und wärest recht schnell zu der Erkenntnis gelangt, dass es in der Tat funktioniert.

    PHP-Code:
    echo file_get_contents('\\\\\\\\HOSTNAME\\file.txt'); 
    Einziges eventuelles Hindernis sind vielleicht die 4 \ vor dem Hostnamen.
    hopka.net!

    Kommentar


    • #3
      PHP-Code:
      echo file_get_contents('\\\\\\\\HOSTNAME\\file.txt'); 
      Kann es sein das Du das auf einem Windows Rechner mit PHP versucht hast? Auf meinem Linux (mit installiertem samba) funktioniert es nicht. Egal wie ich es auch schreibe und versuche. Ein strace zeigt mir auch das er nicht wirklich versucht einen Socket zu öffnen sondern nur ein lstat auf eine lokale Datei macht (die es natürlich nicht gibt).

      Ich bin soweit allen Quellen nachgegangen, auch den Infos in http://de.php.net/manual/de/wrappers.php über die Protokollwrapper. Hier dachte ich eigentlich ist mein Problem zu suchen, denn dort steht u.a. als mögliche URL sowas:

      "\\smbserver\share\path\to\winfile.ext"

      Sieht gut aus. Geht aber nicht. Es drängt sich dabei ja auch noch die Frage nach einer Authentifizierung auf. Wo und wie stelle ich denn Benutzer/Kennwort ein? Was ist das verwendete Auth-Schema?

      Letztlich sollte es mit stream-wrapper-register() möglich sein eigene Protokollwrapper zu bauen und so lag meine Vermutung nahe jemand habe soetwas bereits für das SMB-Protokoll gemacht...

      Das Kommando
      PHP-Code:
      print_r(stream_get_wrappers()); 
      gibt die möglichen Protokolle zurück. Hier bei mir sind das:
      PHP-Code:
      Array
      (
          [
      0] => php
          
      [1] => file
          
      [2] => data
          
      [3] => http
          
      [4] => ftp
          
      [5] => compress.zlib

      Zuletzt geändert von Dr.Speck; 18.09.2007, 08:40.

      Kommentar


      • #4
        Unter Linux ist doch der Slash der Pfadseparator und nicht der Backslash. Hast du das mal ausprobiert?

        Kommentar


        • #5
          Andernfalls könntest du das Samba-Share auch einfach mounten und dann ganz normal per Dateizugriff mit den Daten arbeiten.
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Kommentar


          • #6
            Versuch mal dieses hier.

            Da ist eine samba klasse unter Verwendung von smbclient.
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Kommentar

            Lädt...
            X