Ankündigung

Einklappen
Keine Ankündigung bisher.

upload script auf FTP umgebaut, jetzt gehts nicht mehr =(

Einklappen

Neue Werbung 2019

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

  • upload script auf FTP umgebaut, jetzt gehts nicht mehr =(

    also erstmal das script

    es sind 2 Dateien.

    upload_ftp.php:
    PHP-Code:
    <?php

    if ($senden) {
         include (
    '/includes/ftp_connect.php');
         
    //Variablen definieren
         
    $uploaddir "upload/";     //Ordner für den Upload bestimmen
         
    $sizeabfrage "yes";      //Dateigrösse überprufen? (yes/no)                             
         
    $size "30000";           //maximale Dateigrösse in Byte                                
                                   
         
    $body="<html><body bgcolor=#FFFFFF text=#000000>";
         if (
    $_FILES['file']['name'] == "") {
            echo 
    $body;
            die(
    "Keine Datei gewählt.");
            echo 
    "[url='upload_ftp.php']<< zurück[/url]";
         }
         if (
    file_exists($uploaddir.$_FILES['file']['name'])) {
            die(
    $body."Datei bereits vorhanden. 
    [url='upload.php']<< zurück[/url]"
    );
         }
         if (
    $sizeabfrage == "yes") {
            if (
    $_FILES['file']['size'] > $size) {
               echo 
    $body;
               die(
    "Die Datei ist zu groß !");
               echo 
    "[url='upload_ftp.php']<< zurück[/url]";
            }
         }

         
    //Verzeichnis wechseln
         
    ftp_chdir($uploaddir);
         
         
    $source $_FILES['file']['name'];
         
    $destination $source;
         
         
    // Upload der Datei
         
    $upload ftp_put($conn_id$destination,$sourceFTP_BINARY); 
         
         
    // Upload-Status überprüfen
         
    if (!$upload) { 
            echo 
    "Ftp upload war fehlerhaft!";
         } 
         else {
            echo 
    "Datei $source_file auf $ftp_server als $destination_file geschrieben [url='upload_ftp.php']<< zurück[/url]";
         }
         
    // Schließen des FTP-Streams
         
    ftp_quit($conn_id); 
         }
         else {
    ?>

    <html>
    <body bgcolor=#FFFFFF text=#000000 link=#ccff88 vlink=ccff88 alink=#ccff88>
    <form action="<?php $PHP_SELF?>"method="post" enctype="multipart/form-data">


    Bitte Datei auswählen:

    <input type=file name=file>



      <button name="senden" type="submit">Hochladen</button>


    Dokumentname darf nicht mehr als 31 Zeichen beanspruchen (inkl. Suffix).

    Erlaubte Zeichen: Ziffern, Buchstaben (exkl. Umlaute und Akzente, z.B. &auml;, &Eacute; usw.), Trennstriche. 

    Bitte keine Interpunktionen verwenden; ausser Punkt zur Trennung von Name und Dokument-Kennzeichnung (z.B. name.pdf).
    </form>
    </body>
    </html>

    <?
         }
    ?>  

    </body>
    </html>
    ftp_connect.php (befindet sich im Ordner includes:

    PHP-Code:
    <?php
    $ftp_server 
    "*****";
    $ftp_user_name "*****";
    $ftp_user_pass "*****";

    // Herstellen der Basis-Verbindung
    $conn_id ftp_connect($ftp_server); 

    // Einloggen mit Benutzername und Kennwort
    $login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass); 

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

    ?>
    Die FTP Verbindung funktioniert (deswegen jetzt ausdokumentiert)

    es geht drum, jedesmal wen ich die Datei hochladen will kommt die meldung Ftp upload war fehlerhaft!
    ich glaube der Fehler ist bei ftp_put()...

    noch was, die Dateien müssen im Ordner "upload" hochgeladen werden. hoffe jemand kann mir helfen.
    kann mir jemand helfen? fals ja was muss angepasst werden?
    Wie man Fragen richtig stellt


  • #2
    wird nicht funktionieren....
    die ftp funktionen von php sind nicht was du denkst: von lokal<->phpserver
    sondern von ftp-server<->phpserver
    mfg Floh

    Programmers don't die, they GOSUB without RETURN

    Kommentar


    • #3
      Zur Info, die beim http upload hochgeladene Datei ist eine temporäre -> $_FILES['datei']['tmp_name']
      http://www.php.net/manual/de/features.file-upload.php

      Also noch mal die Pfade & Sourcen prüfen

      Viel Erfolg

      gerdi :wink:

      Kommentar


      • #4
        achso! dann kann man also gar nicht von einem client mit hilfe von PHP über FTP übertragen? das geht nur von FTP server zu FTP server?

        schade =(

        fals es doch eine möglichkeit geben würde FTP zu benutzen gibt mir bescheid!
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Das, was du da vorhast, ist schon ok. Sobald das Formular abgeschickt wird, wird eine temporäre Datei auf dem Server abgelegt. Wenn du dann statt move_uploaded_file die Datei per ftp-Funktionen verschiebst, hast du somit das Problem mit dem Eigentümer und Rechten der Datei umgangen. Wie Gerdi schon geschrieben hat, du hast einen Fehler bei den Namen, source und destination können hierbei nicht identisch sein, du willst ja vom Temp-File aus die neue Datei erstellen.

          Gruß
          phpfan

          Kommentar


          • #6
            ja das meine ich, ich versteh das ftp_put() nicht ganz, daher möchte ich euch ja fragen ob ihr mir nicht den Befehl sagen könnt.

            es geht darum
            das temp file soll einfach in den Ordner "upload" hochgeladen werden und dort einen anderen Namen bekommen (irgendeinname) ich kann ja den Rest dann anpassen
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Och büdde, was ist daran nicht zu verstehen:

              int ftp_put ( int ftp_stream, string remote_file, string local_file, int mode )

              Stream und Mode dürften klar sein, jetzt kannst du schlimmstenfalls remote_file und local_file vertauschen. So, das kann man aber, wennn man das nicht verstanden hat, mit ausprobieren hinbekommen, oder? Also einmal $_FILES['file']['name'] und $_FILES['file']['tmp_name']

              Gruß
              phpfan

              Kommentar


              • #8
                habs mal so gemacht:

                PHP-Code:
                <?php
                     
                // Upload der Datei
                     
                $upload ftp_put($conn_id$_FILES['file']['tmp_name'] ,  $_FILES['file']['name'], FTP_BINARY); 
                ?>
                funktioniert trotzdem nicht (gleiches Problem wie beim esten post..), und es wird ja auch nicht in den Ordner "Upload" gesteckt, besser gesagt es wird gar nirgends gesteckt.

                Ich meine da es ja für euch so einfach ist, wäre es doch besser kurz die codezeile zu posten damit ich es einfach nachvollziehen kann, da ich eigentlich seit dem Freitag am rumprobieren bin..
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Richtig debuggen
                  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
                  2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
                  3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
                  4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
                  5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
                  6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
                  7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

                  Gruß
                  phpfan

                  Kommentar


                  • #10
                    ich bin bei schritt 6, und warte auf hilfe weil ja anscheinend du die Lösung weist aber nicht helfen wilst
                    und man mal wieder wie typisch in Foren in solch eine Diskussion reingerät anstelle einfach den anderen Leuten zu helfen.

                    ich meine der eine sagt es gar nicht das ü¨ber FTP zu übertragen, andere wieder nicht. dann kommen Leute die den Fehler kennen aber ned helfen. =( ach mensch ist es den zu viel verlangt?
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      So sehr ich mich auch bemühe, ich sehe keine Ausgabe w.z.B.

                      print_r($_FILES);

                      oder

                      echo "Tempname = " . $_FILES['file']['tmp_name'] . "Name = " . $_FILES['file']['name'];

                      Soweit ich mich erinnere, liefern die ftp-Funktionen alle Rückgabewerte, die überprüfst du aber so gut wie nie.

                      Gruß
                      phpfan

                      Kommentar


                      • #12
                        hab
                        PHP-Code:
                        <?PHP
                        print_r
                        ($_FILES);
                        ?>
                        reingetan (wo soll ich es nach deiner Meinung rein tun?) ich habs direkt nach der Upload aktion reingetan, und dann wird bei mir einfach das Formular (nach dem abschicken) neu geladen und es passiert einfach NIX

                        mit
                        PHP-Code:
                        <?PHP
                         
                        echo "Tempname = " $_FILES['file']['tmp_name'] . "Name = " $_FILES['file']['name'];
                        ?>
                        genau das gleiche!

                        P.S. habs auch vor dem Upload gepackt (beide Befehle) und passiert trotzdem nix, es erscheint einfach nur wieder das Formular und es wird nichts hochgeladen.
                        willste die phpinfo anschauen?
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          if ($senden)

                          Was ist mit register_globals? Kommt das Script überhaupt in den if-Teil???

                          Gruß
                          phpfan

                          Kommentar


                          • #14
                            ja ohne die 2 Befehle die du mir gesagt hast schon

                            es kommt einfach immer:
                            Ftp upload war fehlerhaft!
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              Was kommt, wenn du den PHP-Teil austauscht, hier raus:
                              PHP-Code:
                              <?php

                              if ($senden)
                              {
                                  echo 
                              "*** Gesendet ***</br>
                              Files: "
                              ;
                                  
                              print_r ($_FILES);

                                  include (
                              '/includes/ftp_connect.php');
                                  
                              //Variablen definieren
                                   
                              $uploaddir "upload/";     //Ordner für den Upload bestimmen
                                   
                              $sizeabfrage "yes";      //Dateigrösse überprufen? (yes/no)                             
                                   
                              $size "30000";           //maximale Dateigrösse in Byte                                
                                                             
                                   //Verzeichnis wechseln
                                  
                              if (ftp_chdir($uploaddir))
                                    echo 
                              "
                              ftp_chdir ok
                              "
                              ;
                                  else
                                    echo 
                              "
                              ftp_chdir ging daneben
                              "
                              ;
                                  
                                  
                              $source $_FILES['file']['tmp_name'];
                                  
                              $destination $_FILES['file']['name'];
                                  
                                  
                              // Upload der Datei
                                  
                              if (ftp_put($conn_id$destination,$sourceFTP_BINARY))
                                    echo 
                              "
                              ftp_put ok
                              "
                              ;
                                  else
                                    echo 
                              "
                              ftp_put ging daneben
                              "
                              ;    

                                  
                              // Schließen des FTP-Streams
                                  
                              ftp_quit($conn_id); 
                              }
                              else {
                              ?>
                              Gruß
                              phpfan

                              Kommentar

                              Lädt...
                              X