Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Copy Funktion

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von Arne Drews Beitrag anzeigen
    @Fuel: Sollte imho so funktionieren, da nach dem ersten Durchlauf das Array ja bereits existiert.
    Allerdings ist es immer sinnvoll, das Array zuvor einmal zu definieren.
    Wußte ich garnicht, ich mein bei anderen Programmiersprachen führt das zu Problemen. Aber gut wieder eine Erfahrung reicher.

    Kommentar


    • #17
      Zitat von Arne Drews Beitrag anzeigen
      Nicht getestet, aber der relevante Teil, um die vorletzte Datei der Log-Dateien lokal zu speichern, müsste in etwa so aussehen:
      PHP-Code:
      $aRemoteFiles ftp_nlist$conn_id$ftp_dir );
      $aLogFiles preg_grep'/^access\.log.+/i'$aRemoteFiles );

      sort$aLogFiles );

      $sMyLogFile array_slice$aLogFiles, -2);
      $sMyLogFile_Name basename$sMyLogFile[0] );

      $bTakenFromRemote ftp_get(
              
      $conn_id,
              
      'pfad/zur/lokalen/quelle/' $sMyLogFile_Name,
              
      $sMyLogFile[0],
              
      FTP_BINARY
          
      );

      if ( 
      $bTakenFromRemote ) {

          echo 
      'Datei erfolgreich kopiert!';

      } else {

          echo 
      'Datei konnte nicht kopiert werden, ich bin verwirrt...';


      ...wie gesagt, nicht getestet, müsste aber in etwa hinkommen.
      Hallo nochmal. Also ich habe das gerade mal ein wenig getestet. Leider ohne Erfolg.

      was mir wohl aufgefallen ist. hier ist das Array leer.

      PHP-Code:
      $aRemoteFiles ftp_nlist$conn_id$ftp_dir );
      $aLogFiles preg_grep'/^access\.log.+/i'$aRemoteFiles );

      sort$aLogFiles ); 
      Daher habe ich einmal alle Schritte von mir soweit gemacht bis ich nur den Dateinamen in der Variable sMyLogFile_Name stehen habe.

      PHP-Code:
          $files ftp_nlist ($conn_id$ftp_dir);
          foreach (
      $files as $list){
              
      $bn[]=basename($list);
              
      //print_r($files);
          
      }    
          
          
      // Sortieren des Arrays
          #print_r($bn);
          
      sort($bn);
          
          
      // Suchen nach access.log im Namen
          
      $log_dateien = (preg_grep('/^access.log.*/',$bn));

          
      // Speichern des vorletzten Datensatzes des Arrays in neue Variable
          
      $datei array_slice($log_dateien,-2,1);

          
      $sMyLogFile_Name basename($datei[0] );
          
              
      // BIS HIER IST ALLES SUPER. GENAU DIESE DATEI BRAUCHE ICH FÜR DIE WEITERE BEARBEITUNG!
          
      echo ($sMyLogFile_Name); 
      Aber ich bekomme die Datei einfach nicht kopiert. Auch nicht mit dem ftp_get

      PHP-Code:
          $bTakenFromRemote ftp_get(
              
      $conn_id,
              
      'QUELLDATEI',
              
      'log_neu/ZIELDATEI',
              
      FTP_BINARY
          
      );
          if ( 
      $bTakenFromRemote ) {

          echo 
      'Datei erfolgreich kopiert!';

          } else {

          echo 
      'Datei konnte nicht kopiert werden, ich bin verwirrt...';

          } 
      er springt immer in den else Zweig rein. Habt Ihr noch ne Idee???

      Ich vermute es liegt immer an die Art und Weise wie ich den Link setze. Also für QUELLDATEI setze ich 'ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@*****.com/logs/QUELLDATEI' ein und für den Zielpfad setze ich 'ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@*****.com/akt_logs/ZIELDATEI' ein. Kann ich das überhaupt so machen?

      Kommentar


      • #18
        Schau Dir die Parameterreihenfolge von ftp_get an, Du verwendest Quelle und Ziel verkehrt herum!
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #19
          Zitat von Arne Drews Beitrag anzeigen
          Schau Dir die Parameterreihenfolge von ftp_get an, Du verwendest Quelle und Ziel verkehrt herum!
          oh man. wie dumm.

          -> funktioniert dennoch noch nicht. er springt wieder in den verwirrt zweig.

          Kommentar


          • #20
            Noch 2 Ideen:
            1. Hast du Schreibrechte im entsprechenden Ziel-Ordner?
            2. Funktioniert aktiver FTP-Zugriff? (Vergleiche active + passive mode). Evtl. brauchst du ein ftp_login() und ftp_pasv()

            Kommentar


            • #21
              Am besten wird es sein, wenn Du nochmal das ganze Script postest, wie Du es grad hast.
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #22
                Morgen zusammen,

                also hier noch einmal mein Skript. Bin da langsam echt dran am verzweifeln.

                PHP-Code:
                <?php

                    
                //FTP-Verbindung zum Server aufbauen
                    // Login-Daten müssen angepasst werden
                    
                $ftp_server "****";
                    
                $ftp_user_name "****";
                    
                $ftp_user_pass "****";
                    
                $ftp_dir "logs";
                    
                $ftp_new_dir "/akt_log";
                 
                    
                // 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);
                     
                    
                // Besteht eine FTP-Verbindung
                    
                if ((!$conn_id) || (!$login_result)) {
                        echo 
                "2.) FTP-Verbindung nicht hergestellt!";
                        echo 
                "3.) Verbindung mit $ftp_server als Benutzer $ftp_user_name nicht möglich";
                        die;
                    } else {
                        echo 
                "2.) FTP-Verbindung erfolgreich<br/>";
                        echo 
                "3.) Verbunden mit $ftp_server als Benutzer $ftp_user_name<br/><br/>";
                    }
                    
                    
                // Schalte passiven Modus ein - Habe ich mal eingeschaltet. Aber geht immer noch nicht. 
                    
                ftp_pasv($conn_idtrue);
                    
                    
                // Suchen der exakten Log-Datei für die weitere Bearbeitung
                    
                    // Einlesen des Verzeichnisinhalts in ein Array
                    
                $files ftp_nlist ($conn_id$ftp_dir);
                    foreach (
                $files as $list){
                        
                $bn[]=basename($list);
                        
                //print_r($files);
                    
                }    
                    
                    
                // Sortieren des Arrays
                    #print_r($bn);
                    
                sort($bn);
                    
                    
                // Suchen nach access.log im Namen
                    
                $log_dateien = (preg_grep('/^access.log.*/',$bn));

                    
                // Speichern des vorletzten Datensatzes des Arrays in neue Variable
                    
                $datei array_slice($log_dateien,-2,1);

                    
                $sMyLogFile_Name basename($datei[0] );
                    
                        
                // Hier steht der richtige Name der Datei drin. Also bis hier ist alles tutti!
                    
                echo ($sMyLogFile_Name);

                        
                // Auch wenn ich hier nichts falsches erkennen kann. Aber hier muss irgendwo der Hund begraben liegen. 
                    
                $bTakenFromRemote ftp_get(
                        
                $conn_id,
                        
                'ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@****/akt_logs/' $sMyLogFile_Name,
                        
                'ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@****/logs/' $sMyLogFile_Name,
                        
                FTP_BINARY
                    
                );
                    if ( 
                $bTakenFromRemote ) {

                    echo 
                'Datei erfolgreich kopiert!';

                    } else {

                    
                // Hier springt er immer hin.
                    
                echo 'Datei konnte nicht kopiert werden, ich bin verwirrt...';

                    }
                Habe die Berechtigungen für den Ordner mal auf 777 gesetzt. Bringt leider auch nichts. Wer Idee hat darf mir diese gerne mitteilen.

                Gruß
                Daniel

                Kommentar


                • #23
                  Bins nur kurz überflogen, aber ftp: für die lokale Datei ist natürlich Humbug!
                  So kann das nicht funktionieren. Nach Eliminierung der ganzen Flüchtigkeitsfehler würde das sicher auch in der kürzeren Variante von mir funktionieren, vermute ich mal...
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  Kommentar


                  • #24
                    Zitat von Arne Drews Beitrag anzeigen
                    Bins nur kurz überflogen, aber ftp: für die lokale Datei ist natürlich Humbug!
                    So kann das nicht funktionieren. Nach Eliminierung der ganzen Flüchtigkeitsfehler würde das sicher auch in der kürzeren Variante von mir funktionieren, vermute ich mal...

                    also verstehe ich das dann so, dass ich mir die Datei, die in $sMyLogFile_Name steht erst runterladen muss?

                    Kann ich das nicht noch irgendwie abkürzen??? Ich habe ja Pfad und Dateinamen bereits.

                    Kommentar


                    • #25
                      In $sMyLogFile_Name steht nur der Name, damit Du den lokalen Pfad davor setzen kannst. Das zusammen ist der zweite Parameter von ftp_get. Wenn zuvor alles richtig ist, macht ftp_get richtig angewendet genau das, was Du möchtest...
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar

                      Lädt...
                      X