dangermouse: Dateien mittels PHP von Webserver auf externen Server kopieren

Liebes Forum,

auf meinem Webserver liegen Dateien, die ich von dort aus gerne mittels PHP auf einen anderen Server kopieren möchte.
Der andere (externe) Server hat keinen FTP-Zugang, dafür aber einen Webdav-Zugang. Das heißt, ich muss mich dort per Webdav anmelden, um Dateien dorthin zu kopieren.

Wie kann ich so etwas realisieren?
Ich freue mich auf eure Antworten.

Liebe Grüße

danger

  1. Hello,

    auf meinem Webserver liegen Dateien, die ich von dort aus gerne mittels PHP auf einen anderen Server kopieren möchte.
    Der andere (externe) Server hat keinen FTP-Zugang, dafür aber einen Webdav-Zugang. Das heißt, ich muss mich dort per Webdav anmelden, um Dateien dorthin zu kopieren.

    hat der andere Server auch SSH?
    Dann käme ggf. auch sshfs in Frage.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. hat der andere Server auch SSH?
      Dann käme ggf. auch sshfs in Frage.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      Lieber Tom,

      vielen Dank für deine Antwort. Ich fürchte, ich habe nur den Webdav-Zugang. Gibt es eine Möglichkeit, diesen mittels PHP zu nutzen?
      Ich habe mir schon verschiedene Erweiterungen für PHP angeschaut, werde aber nicht so richtig schlau daraus.

      Das hier zum Beispiel scheint genau das zu machen, was ich vorhabe: http://php-webdav.pureftpd.org/project/php-webdav

      Leider weiß ich nicht, was eine Standard-PECL-Prozedur ist. Für meinen eigenen Webserver habe ich auch kein SSH und weiß auch nicht, wie ich da über eine Konsole zugreifen könnte.

      Viele Grüße und vielen Dank für jeden Hinweis

      danger

      1. Tach!

        Leider weiß ich nicht, was eine Standard-PECL-Prozedur ist.

        Eine PECL-Extension ist wie die eingebauten Extensions (z.b. mysql) eine Erweiterung PHPs. Allerdings sind diese entweder noch nicht produktionsreif oder nicht (mehr) von allgemeinem Interesse, weswegen sie etwas abseits geparkt sind. Will man das verwenden, muss man auf alle Fälle administrativen Zugang zum Server haben. Da dich nicht davon ausgehe, dass du den hast, kann ich mir sicher weitere Ausführungen sparen.

        dedlfix.

    2. Tach!

      hat der andere Server auch SSH?
      Dann käme ggf. auch sshfs in Frage.

      Wohl eher nicht sshfs, denn dann braucht man auch noch FUSE. Oder meintest du jetzt einfach nur SCP oder SFTP? PHP hat auch eine SSH-Extention, die allerdings eine PECL-Extension ist und somit nicht unbedingt auf allen Plattformen eingebunden ist. Mit der kann man jedenfalls auch schön Dateien übertragen.

      dedlfix.

  2. Tach!

    Der andere (externe) Server hat keinen FTP-Zugang, dafür aber einen Webdav-Zugang. Das heißt, ich muss mich dort per Webdav anmelden, um Dateien dorthin zu kopieren. Wie kann ich so etwas realisieren?

    Man tippt einfach "php webdav" in eine Suchmaschine und nimmt sich einer der vorgestellten Lösungen.

    dedlfix.

    1. Man tippt einfach "php webdav" in eine Suchmaschine und nimmt sich einer der vorgestellten Lösungen.

      dedlfix.

      Lieber dedlfix,

      das habe ich bereits getan und auch schon PEAR und den HTTP_WebDAV_Client installiert. Leider weiß ich nicht, wie ich die benutzen kann.
      SabreDAV habe ich ebenfalls installiert, das scheint aber eher dafür gedacht zu sein, von lokal auf den eigenen Server zuzugreifen.

      Ich finde nicht den Ansatz, wie ich mit dem HTTP_WebDAV_Client arbeiten könnte. Da bin ich wohl auch nicht allein:
      http://www.phpforum.de/forum/showthread.php?t=177609
      http://comments.gmane.org/gmane.comp.web.webdav.neon.general/756
      http://www.phpbuilder.com/board/showthread.php?t=10356821

      Ich würde mich sehr über Tips freuen!

      Alles Gute

      danger

      1. Hier habe ich etwas gefunden: http://stackoverflow.com/questions/3369675/php-idisk-webdav-client

        Ich werde es im Laufe des Tages ausprobieren und dann hier berichten.

        Für weitere Hinweise bin ich dankbar.

        Alles Gute

        danger

      2. Tach!

        Man tippt einfach "php webdav" in eine Suchmaschine und nimmt sich einer der vorgestellten Lösungen.
        das habe ich bereits getan und auch schon PEAR und den HTTP_WebDAV_Client installiert. Leider weiß ich nicht, wie ich die benutzen kann.

        Wenn du nicht berichtest, was du schon getan hast und woran du gescheitert bist, weiß ich nicht, wo ich ansetzen muss. Also fange ich beim einfachsten an und heraus kommt dann so eine oberschlaue Google-doch-mal-Antwort. Ich fand nämlich auf Anhieb das da und ohne es mir genau anzusehen, sah das umfangreich und vermutlich problemlösend aus.

        PEARs WebDAV glänzt vor allem durch die Abwesenheit einer Dokumentation. Man muss da also den vorhandenen Code analysieren und damit auf die Funktionsweise schließen. Oder man findet irgendwo eine Webseite, die dies schon durchgemacht hat. Und da bist du ja schon auf einem guten Weg.

        SabreDAV habe ich ebenfalls installiert, das scheint aber eher dafür gedacht zu sein, von lokal auf den eigenen Server zuzugreifen.

        SabreDAV scheint auf den ersten Blick um Längen besser zu sein. Vor allem gibt es im dortigen Wiki eine Dokumentation. Und das auch, wie man damit einen Client aufsetzt.

        dedlfix.

        1. SabreDAV scheint auf den ersten Blick um Längen besser zu sein. Vor allem gibt es im dortigen Wiki eine Dokumentation. Und das auch, wie man damit einen Client aufsetzt.

          dedlfix.

          Lieber dedlfix,

          vielen Dank für die Antwort. Sie hat mich ermutigt, mich noch einmal mit SabreDAV zu beschäftigen und siehe da, es geht ganz leicht.
          Vielen lieben Dank für die Tips und Hinweise!

          danger

          Den ersten Testcode, mit dem ich eine Datei übertragen konnte, füge ich einfach mal hier ein, er ist zwar laienhaft und nur eine kleine Modifikation des Beispielcodes von der SabreDAVseite, aber vielleicht hilft es ja doch jemandem, der irgendwann auf diese Seite trifft:

          <?php  
          // Pfad anpassen  
          require_once 'SabreDAV/lib/Sabre/autoload.php';  
            
          $settings = array(  
              'baseUri' => 'adresseDesEntferntenServers/pfad/',  
              'userName' => 'webdavbenutzername',  
              'password' => 'passwort',  
              'proxy' => '',  
          );  
            
          $client = new Sabre_DAV_Client($settings);  
            
          $file = './dateiaufserver.txt';  
          $data = '';  
          $handle = fopen ($file, "r");  
          while (!feof($handle)) {  
              $data .= fgets($handle);  
          }  
          fclose ($handle);  
            
          // Will do a GET request on the base uri  
          //$response = $client->request('GET');  
            
          // Will do a HEAD request relative to the base uri  
          //$response = $client->request('HEAD', 'stuff');  
            
          // Will do a PUT request with a request body  
          $response = $client->request('PUT', $file, $data);  
            
          // Will do a DELETE request with a condition  
          //$response = $client->request('DELETE', 'file.txt', null, array('If-Match' => '"12345765"'));  
          ?>
          
          1. Tach!

            $data = '';
            $handle = fopen ($file, "r");
            while (!feof($handle)) {
                $data .= fgets($handle);
            }
            fclose ($handle);

            Nimm file_get_contents(), damit bekommst du das Dateilesen in einer Zeile erledigt.

            dedlfix.