FTP-Probleme

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

  • FTP-Probleme

    hallo,

    ich versuche gerade, dateien per ftp auf einen anderen server zu laden. leider klappt das mit einem bestimmten server nicht.

    kann ich mit

    Code:
    ftp_pasv($server_conn, 0);
    den passiv-modus ausstellen?

    wenn ja, warum komme ich dann zwar auf den server, kann auch das verzeichnis wechseln aber keine dateien uebertragen, obwohl ich sehr wohl dateien ueber einen ftp-client mit dem gleichen login uploaden kann?

    ich blicke es gerade ueberhaupt nicht ...

  • #2
    wie sieht denn dein Upload-Skriptteil aus? Vielleicht liegt ja auch da der Fehler. Ah, bzw. was kommt denn für ein Fehler? Oder kommt gar keiner?

    Kommentar


    • #3
      Nachtrag - Problembeschreibung

      da passiert ewig nix, irgendwann ist das script dann zu ende, und auf dem bildschirm steht:

      Sie sind eingeloggt
      Sie befinden sich in: /[...]
      Plattform: UNIX

      Warning: ftp_put: PORT command successful. in /usr/local/www/data/sascha/lurch_upload.php on line 41
      Upload fehlgeschlagen!


      mein script sieht so aus:

      Code:
      <?php
      
      $server_host = "[...]";
      $server_user = "[...]";
      $server_pass = "[...]";
      $server_dir  = "[...]";
      $server_pasv = 0;
      $local_dir   = "[...]";
      
      $server_conn = ftp_connect($server_host);
      
      if (ftp_login($server_conn,$server_user,$server_pass)) {
      
      	echo "Sie sind eingeloggt<br>";
      
      	ftp_chdir($server_conn,$server_dir);
      	echo "Sie befinden sich in: " . ftp_pwd($server_conn) . "<br>";
      
      	echo "Plattform: " . ftp_systype($server_conn) . "<br>";
      
      	ftp_pasv($server_conn, $server_pasv);
      
      	$direct = $local_dir;
      	$verzeichnis = dir($direct);
      
      	$endung = "html";
      	while ($datei = $verzeichnis->read()) {
      		$hilfe = explode(".",$datei);
      		if ($hilfe[1] == $endung) {
      
      			// upload der datei
      			$datei_ftp   = $datei;
      			$datei_lokal = $direct . "/" . $datei;
      			if (ftp_put($server_conn,$datei_ftp,$datei_lokal,FTP_BINARY)) {
      				echo "<p>Datei hochgeladen: $datei_lokal<br>";
      			} else {
      				echo "Upload fehlgeschlagen!<br>";
      			}
      						
      		}
      	} 
      
      	$verzeichnis->close();
      
      } else {
      	echo "Ihre Zugangsdaten stimmen nicht<br>";
      }
      
      ftp_quit($server_conn); 
      
      ?>
      wobei bei der konfiguration oben natuerlich richtige werte stehen ...

      also, wieso kann ich
      - die verbindung herstellen
      - mich einloggen
      - das verzeichnis wechseln
      - den standort auslesen
      - die systemumgebung auslesen

      aber dafuer keine dateien hochschieben?
      verzeichnis auslesen geht uebrigens auch nicht.

      wenn ich den server per ftp-client ansteuer, dann muss "passive transfer" ausgestellt sein, sonst klappt nix. aber wenn dem so ist, kann ich prima alles machen ;-(

      so, ich hoffe, irgendwer da draussen kann mir helfen!

      Kommentar


      • #4
        auf dem Zielserver wird dir das richtige Verzeichnis ausgegeben? Wenn ja, stimmt denn überhaupt der Pfad zu deinem lokalen Verzeichnis?
        Laß dir doch mal dein ftp_put ausgeben, also was steht da in $datei_lokal und $datei_ftp drin. Außerdem würde ich auch überprüfen, ob dein ftp_pasv erfolgreich ist ->

        if (ftp_pasv($server_conn, $server_pasv)) echo "Passiv-Modus abgeschaltet"; else echo "Fehlgeschlagen";

        P.S.: eigentlich sieht alles andere okay aus.

        Kommentar


        • #5







          auf dem zielserver stimmt alles. das mit dem lokalen verzeichnis auch. auf dem server wird sogar die erste datei angelegt (0 byte)!

          ftp_pasv war angeblich erfolgreich!

          wenn ich einen anderen server anspreche (bei dem brauche ich passiv-transfers!) und das ftp_pasv auf 1 setze, klappt ja auch alles!

          verdammt nochmal, ich hab bald keine lust mehr ;-(

          Kommentar


          • #6
            hmmm, seltsam. Wenn du sogar ein File eröffnen kannst, scheint die Verbindung und die Berechtigung ja okay zu sein. Irgendwas verhindert wohl den Datastream. Stimmt denn deine Quelldatei auch wirklich? Darf die gelesen werden?

            Ansonsten fällt mir nichts mehr ein, sorry, wenn ich nicht weiterhelfen konnte.
            Viel Glück weiterhin und nicht aufgeben.

            Kommentar


            • #7
              Neue Ansichten

              was mir aufgefallen ist:

              ich habe jetzt ein sehr simples script

              Code:
              <?php
              
              $server_conn = ftp_connect("xxx");
              
              if (ftp_login($server_conn,"xxx","xxx")) {
              
              	echo "Sie sind eingeloggt<br>";
              	ftp_chdir($server_conn,"xxx");
              	echo "Sie befinden sich in: " . ftp_pwd($server_conn) . "<br>";
              
              // hier tausche ich nur die kommentartags aus
              	if (ftp_pasv($server_conn,0)) echo "Aktivmodus<br>";
              //	if (ftp_pasv($server_conn,1)) echo "Passivmodus<br>";
              	
              	$upload = ftp_put($server_conn,"data.txt","data.txt",FTP_BINARY);
              	
              	if ($upload) echo "Datei hochgeladen.<br>";
              	else echo "Upload fehlgeschlagen!<br>";
              
              
              } else echo "Ihre Zugangsdaten stimmen nicht<br>";
              
              ftp_quit($server_conn); 
              
              ?>
              und habe einen grossen testversuch gemacht:

              meine testserver:
              A - der eigentliche sende-server
              B - mein puretec-account
              C - der eigentliche zielserver
              D - ein anderer zielserver

              auf den server C komme ich per leap-ftp im passiv-modus nicht drauf! aber passiv alles wunderbar. aber das soll auch so sein, sagen die server-chefs.

              meine tests, uebertragung der datei "data.txt" per script:

              A -> C
              1) aktiv: Warning: ftp_put: PORT command successful.
              2) passiv: Warning: ftp_put: Type set to I.

              A -> D
              3) aktiv: Warning: ftp_put: PORT command successful.
              4) passiv: Datei hochgeladen.

              B -> C
              5) aktiv: Datei hochgeladen.
              6) passiv: Warning: ftp_put: Type set to I.

              B -> D
              7) aktiv: Datei hochgeladen.
              8) passiv: Datei hochgeladen.

              aha. was kann auf server A denn falsch sein, dass es den aktiv-transfer nach C/D nicht gebacken kriegt?
              vielleicht gibt es da draussen irgendjemand, der jetzt weiss, wie der hase laeuft?

              ps. ich muss das hinkriegen!

              Kommentar


              • #8
                liegt Server a vielleicht hinter einer Firewall?
                Dann brauchst du auf jeden Fall den passive Mode. Warum da allerdings diese "Type..."-Meldung bei dir kommt, keine Ahnung...

                Kommentar


                • #9
                  Problem beseitigt

                  so schnell kann's gehen.

                  zu dumm, dass ich kein techniker bin (eigentlich ja eher aus der gestalterischen ecke), sonst haette ich wahrscheinlich schon letzte woche vermutet, dass es sich um ein firewall-prob handelt ...

                  eben (nach dem abschicken des letzten brockens) ging mir dann langsam auch ein licht auf, und ich habe mal ziemlich direkt nachgefragt, ob der server aktive transfers ueberhaupt zulaesst: natuerlich nicht. jetzt habe ich ein loch in der firewall und bin gluecklich!

                  danke fuer die hilfe, es ist ein wahrlich wunderbares gefuehl, wenn man sich nicht so alleine vorkommt!

                  Kommentar


                  • #10
                    Bei mir kommt zwar keine Type-Meldung, doch das Problem ähnelt deinem sehr stark. Mit ftp_put lade ich eine Datei, sagen wir test.txt, auf den Server in das gewünschte Verzeichnis. Die Datei test.txt wird zwar angelegt, ist aber 0Kb gross. Denn Passive-Mode habe ich aktiviert (wegen der Firewall). Woran kann das liegen? Wie lässt sich das Problem beheben? Vielen Dank für jeden Ratschlag! Gruss Chris

                    Kommentar

                    Lädt...
                    X