Tobias Otto: FTP PHP

Hallo ich bin bald am verzweifeln,

ich bekomme es einfach nicht hin mit ftp_put eine datei hochzuladen.
bekomme immer die fehlermeldung

Aktuelles Verzeichnis: /
Aktuelles Verzeichnis: /Inetpub/wwwroot

Warning: ftp_put(): Unable to access test.html in D:\inetpub\wwwroot\adr.php on line 35
FTP-Upload ist fehlgeschlagen!

wenn ich ftp_delete statt put mache funktioniert es komischer weise. die datei ist gelöscht. also dürften mir ja auch keine zugriffsrechte fehlen oder??

Folgender Quelltext:

// Verbindungsaufbau
 $conn_id = ftp_connect($ftp_server);

// Login mit Username und Passwort
 $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Verbindung überprüfen
 if ((!$conn_id) || (!$login_result)) {
         echo "FTP Verbindung ist fehlgeschlagen!<br>";
         echo "Verbindungasufbau zu $ftp_server mit Username $ftp_user_name versucht.<br>";
         exit;
     } else {
         echo "Verbunden zu $ftp_server mit Username $ftp_user_name<br><br>";
         ftp_pasv($conn_id, TRUE);
     }

echo "Aktuelles Verzeichnis: " . ftp_pwd($conn_id) . "<br>";

if (ftp_chdir($conn_id, "Inetpub\wwwroot")) {
    echo "Aktuelles Verzeichnis: " . ftp_pwd($conn_id) . "<br>";
} else {
    echo "Verzeichnis-Wechsel ist fehlgeschlagen.\n";
}

// Datei hochladen
 $upload = ftp_put($conn_id, "test2.html", "test.html", FTP_ASCII);

// Upload überprüfen
 if (!$upload) {
         echo "FTP-Upload ist fehlgeschlagen!";
     } else {
         echo "Datei $source_file auf Server $ftp_server als $destination_file hochgeladen";
     }

// FTP Verbidung schließen
 ftp_close($conn_id);

  1. Hello,

    bau mal die Überprüfung und ggf. Einstellung des local working directorys ein

    http://de2.php.net/manual/de/function.ftp-raw.php

    $_result = ftp_raw('lcd');

    print_r($_result);

    $_result = ftp_raw("lcd $lokales_verzeichnis");

    print_r($_result);

    Ich vermute, dass Du lokal noch im Wald stehst

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. Hello,

      bau mal die Überprüfung und ggf. Einstellung des local working directorys ein

      http://de2.php.net/manual/de/function.ftp-raw.php

      $_result = ftp_raw($conn_id,'lcd');

      print_r($_result);

      $_result = ftp_raw($conn_id,"lcd $lokales_verzeichnis");

      print_r($_result);

      da fehlte noch die Connection-ID, aber das hättest Du sicher selber gemerkt.

      Es ist aber gar nicht so einfach, über die PHP-FTP-Funktionen alle Features des Servers zu nutzen.

      Wenn ich auf meinem Testserver als angemeldeter ftp-User beim FTP-Server (anderes Gerät)

      $_help = ftp_raw($ftp_svr, "help");
           print_r($_help);

      aufrufe, erhalte ich diese Antwort.

      Array
      (
          [0] => 214-The following commands are recognized:
          [1] =>    USER   PASS   QUIT   CWD    PWD    PORT   PASV   TYPE
          [2] =>    LIST   REST   CDUP   RETR   STOR   SIZE   DELE   RMD
          [3] =>    MKD    RNFR   RNTO   ABOR   SYST   NOOP   APPE   NLST
          [4] =>    MDTM   XPWD   XCUP   XMKD   XRMD   NOP    EPSV   EPRT
          [5] =>    AUTH   ADAT   PBSZ   PROT   FEAT   MODE   OPTS   HELP
          [6] =>    ALLO   MLST   MLSD   SITE   P@SW
          [7] => 214 Have a nice day.
      )

      Das sind die Kommandos, die der FTP-Server (Filezilla) verstehen will

      Leider liefert er keine Erklärungen dazu, so wie es der Client mit

      ftp> help rhelp
         rhelp           get help from remote server

      tut.

      ftp> rhelp PASS
         214 Command PASS is supported by FileZilla Server

      ist leider alles, was er von sich gibt.

      Besteht die Frage, sind die Nmemonics, die der Server versteht, genormt, oder kann das jeder Server so halten, wie er will?

      Ich finde leider auch nirgendwo eine Hilfe zu den Commands

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      1. Moin!

        Besteht die Frage, sind die Nmemonics, die der Server versteht, genormt, oder kann das jeder Server so halten, wie er will?

        Was wäre die Konsequenz für FTP-Clients, und wie wahrscheinlich ist, dass man diese Konsequenz akzeptiert hat?

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Hello,

          Besteht die Frage, sind die Nmemonics, die der Server versteht, genormt, oder kann das jeder Server so halten, wie er will?

          Was wäre die Konsequenz für FTP-Clients, und wie wahrscheinlich ist, dass man diese Konsequenz akzeptiert hat?

          Das kommt darauf an...

          Die vom FTP-Client in seiner Beutzershell akzeptierten Kommandos könnten vollkommen anders lauten, als diejenigen, die er zum Server sendet. Außerdem könnte es sein, dass zum Server keine Mnemonics gesendet werden, sondren Befehlsnummern. Es wäre damit vollkommen unerheblich, welches Mnemonic der Server welcher Befehlsnummer zuordnet.

          Es ist also durchaus nicht zwingend erforderlich, dass die bei HELP oder REMOTEHELP oder RHELP aufgeslisteten Kommandos genormt sind. Übersetzt werden könnten sie vom Client, bevor er auf sein API zugreift.

          So habe ich es jedenfalls kennengelernt.

          Wenn FTP nun aber im Klartext bzw. über Mnemonische Befehle abgewickelt wird, dann sieht das natürlich anders aus.

          Das hieße dann, dass in den Netzwerkpaketen irgendwo die Schlüsselwörter drinstehen müssten.

          Aber die eigentliche Frage bleibt bestehen:

          Kann mir jemand zu dem abgebildeten Befehlssatz ausführlichere (deutsche) Beschreibungen liefern?

          ABOR
          ADAT
          ALLO
          APPE
          AUTH
          CDUP
          CWD
          DELE
          EPRT
          EPSV
          FEAT
          HELP
          LIST
          MDTM
          MKD
          MLSD
          MLST
          MODE
          NLST
          NOOP
          NOP
          OPTS
          P@SW
          PASS
          PASV
          PBSZ
          PORT
          PROT
          PWD
          QUIT
          REST
          RETR
          RMD
          RNFR
          RNTO
          SITE
          SIZE
          STOR
          SYST
          TYPE
          USER
          XCUP
          XMKD
          XPWD
          XRMD

          Und dann bitte auch die Antwort-Codes (Status-Codes oder Fehlernummern?)

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          1. Hello,

            RFC 114 über diverse Zwischenschritte bis RFC 959
            Ist die 959 die bisher letzte zu diesem Thema?

            Dann werde ich mir mal die Mühe machen, die Funktionen rauszusuchen  und zu versuchen, sie auf deutsch zu überstzen.

            Zumindest gibt es wohl noch große Diskrepanzen, welche Funktionen ein Server unterstützt.

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)