Dirk: FTP-Upload auf fremden Server

Hallo!

Also ich habe auf meinem Server PHP zur Verfügung und möchte gern damit eine Datei zu einem anderen Server per FTP übertragen. Die FTP-Funktionen im PHP-Handbuch habe ich schon studiert, aber irgendwie komme ich da nicht weiter.

Server A (mit PHP) -> ein PHP-Script öffnet eine FTP-Verbindung zu Server B -> datei.html von Server A wird zu Server B übertragen -> das PHP-Script schließt die Verbindung

Sieht ganz einfach aus, aber ich komme da nicht weiter. Die Datei hat immer den gleichen Namen und soll einfach die datei.html auf Server B überschreiben. Gedacht ist die Sache für eine Liste mit Terminen, welche ich auf Server A mit einem anderen Script erstelle, aber auf Server B benötigt wird.

Ich würde mich freuen, wenn da jemand weiterhelfen kann, danke.

Grüße,
Dirk

  1. Huhu Dirk

    Server A (mit PHP) -> ein PHP-Script öffnet eine FTP-Verbindung zu Server B -> datei.html von Server A wird zu Server B übertragen -> das PHP-Script schließt die Verbindung

    Sieht ganz einfach aus, aber ich komme da nicht weiter.

    Ist doch auch einfach ;-)

    Wo genau kommst Du nicht weiter?

    Hast Du schon etwas probiert?
    Evtl. magst Du ein Stück Deines (nichtfunktionierenden?) Codes posten.

    Ansonsten wäre der erste Schritt über phpinfo() festzustellen ob in der benutzten PHP-Installation ftp überhaupt "enabled" ist.

    Viele Grüße

    lulu

    1. Huhu Dirk

      Hoho Lulu

      Evtl. magst Du ein Stück Deines (nichtfunktionierenden?) Codes posten.

      Eigentlich habe ich mir das Beispiel von http://www.dclp-faq.de/q-datei-upload-ftp.html genommen und versucht, daraus schlau zu werden. Eine ganze Menge kann ich wegkürzen, dann bleibt übrig:

      <?php
        $link = ftp_connect("meinserver.de");
        if (!ftp_login($link, "benutzername", "passwort"))
          die("Kann mich nicht einloggen.");

      if (!ftp_chdir($link, "/pub"))
          die("Kann nicht in das Zielverzeichnis /pub wechseln.");

      $result = ftp_get($link, "/tmp/bbb", "beispiel", FTP_BINARY);
        if (!$result)
          die("Download von Datei beispiel fehlgeschlagen.");

      if (!ftp_chdir($link, "/incoming"))
          die("Kann nicht in das Zielverzeiczhnis /incoming wechseln.");

      $result = ftp_put($link, "upload.txt", "/etc/termcap", FTP_BINARY);
        if (!$result)
          die("Upload von Datei termcap fehlgeschlagen.");

      ftp_quit($link);

      printf("Ende.<br>\n");
      ?>

      Das Script loggt sich auf dem meinserver.de ein, wechselt dort in das spätere Zielverzeichnis (?), zieht sich von diesem Server (?) die Datei "beispiel", wechselt dann in das Zielverzeichnis "/incoming" (?) und packt dann die Datei upload.txt in das Verzeichnis "/etc/termcap".
      Jede Menge Fragezeichen, irgendwie verstehe ich die ganze Sache nicht so ganz. Für mich sieht es aus, als würde dieses Script eine Datei auf Server B von Verzeichnis 1 in das Verzeichnis 2 kopieren, was ich ja überhaupt nicht will. Die ganze Sache scheint für mich ein Buch mit sieben Siegeln, über einen Unterstützung würde ich mich sehr freuen.

      Ansonsten wäre der erste Schritt über phpinfo() festzustellen ob in der benutzten PHP-Installation ftp überhaupt "enabled" ist.

      Habe ich schon überprüft, PHP 4.1.1 mit aktivierter FTP-Unterstützung.

      Grüße,
      Dirk

      1. Jetzt habe ich noch rumprobiert und es mal mit dem Beispiel aus http://www.php.net/manual/de/ref.ftp.php versucht, da scheint es zu funktionieren:

        <?php
        $ftp_server = "meinserver.de";
        $ftp_user_name = "benutzername";
        $ftp_user_pass = "passwort";
        $destination_file = "/zielverzeichnis/dateiname.html";
        $source_file = "originaldatei.html";

        $conn_id = ftp_connect("$ftp_server");

        $login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");

        if ((!$conn_id) || (!$login_result)) {
                echo "Ftp-Verbindung nicht hergestellt!";
                echo "Verbindung mit $ftp_server als Benutzer $user nicht möglich";
                die;
            } else {
                echo "Verbunden mit $ftp_server als Benutzer $user";
            }

        $upload = ftp_put($conn_id, "$destination_file", "$source_file", FTP_BINARY);

        if (!$upload) {
                echo "Ftp upload war fehlerhaft!";
            } else {
                echo "Datei $source_file auf $ftp_server als $destination_file geschrieben";
            }

        ftp_quit($conn_id);
        ?>

        Ist der Quelltext so ok? Schade, dass mir niemand hier im Forum helfen konnte, ich hatte echt schon ewig probiert und wenn ich es jetzt so sehe, wäre es für die PHP-Cracks sicher der Aufwand von paar Sekunden gewesen :-(

        Grüße,
        Dirk