Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Script am Dateien mit unterschiedlichem Namen zu kopieren

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Script am Dateien mit unterschiedlichem Namen zu kopieren

    Hallo zusammen,

    sry das ich mit einer wahrscheinlich absoluten noob-Frage komme, aber ich bekomme es leider einfach nicht gebacken.

    Ich habe eine Webcam die ihre Bilder per ftp auf meinen Webspace bei all-inkl.com hochlädt. Leider versieht die Kamera die Dateinamen immer mit einem Timestamp, so das jede Datei anders heißt. Hierzu bräuchte ich ein Script das einfach die Datei die in einem bestimmten Verzeichnis liegt ausschneidet und diese Datei umbenannt in ein anderes Verzeichnis verschiebt. Diese Script sollte dann einfach als Cronjob laufen und gut ist.

    Das Script ansich sieht so aus:

    <?php
    $quelle = "/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam/FI9805W_C4D6553A97B5/snap/Schedule_*.jpg";
    $ziel = "/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg";
    if (copy($quelle ,$ziel)) {
    unlink($quelle);}
    ?>

    Wenn ich das Script aufrufe kommt immer folgende Fehlermeldung: Warning: copy(/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam/FI9805W_C4D6553A97B5/snap/Schedule_*.jpg) [function.copy]: failed to open stream: No such file or directory in /www/htdocs/w006b59f/wetter.hebertsfelden.info/camcopy.php on line 4

    Zum einen Weiß ich nicht ob ich in php den * als Wildcardzeichen verwenden kann und zum anderen macht mir der Pfad Probleme. Ich weiß nicht ob der so richtig angegeben ist.

    Ich hoffe hier kann mir wer weiterhelfen da ich da einfach anstehe. Leider

    Vielen Dank schon mal. Grüße,
    Nocki.

  • #2
    Hallo!

    Bitte PHP Code in die Forum-Code-Tags geben.

    No such file or directory in
    Dh PHP findest das file nicht. Was ich weiß funktionieren bei copy() keine Wildcards, glob() unterstützt Wildcards: http://php.net/manual/de/function.glob.php

    Und hier, das copy/unlink geht in einem: http://php.net/manual/de/function.rename.php

    Und hier noch auch noch zu glob bzw. Verzeichnisse auslesen: http://php-de.github.io/jumpto/verzeichnis-auslesen/

    LG
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Hallo Nocki,

      Erstmal willkommen.

      folgende Zeile kann dir helfen, den richtigen Pfad anzugeben:
      PHP-Code:
      echo $_SERVER['DOCUMENT_ROOT']; 

      mfG APH

      komisch: Kaum macht man`s richtig funktioniert`s a scho.

      Kommentar


      • #4
        Vielen Dank euch für den Versuch zu helfen, aber irgendwie verstehe ich nur Bahnhof.

        Wie man vielleicht merkt hab ich vom Programmieren absolut keine Ahnung und von php gleich noch weniger. Ich hab mir den Link mit glob angesehen und google auch noch weiter danach befragt, aber ich verstehe weder die Syntax noch kapiere ich wie ich dieses glob einsetzen soll.
        Könnt ihr mir da bitte noch etwas weiter auf die Sprünge helfen wie das mit dem Datei umkopieren und umbenennen auf die Reihe bekommen kann.

        Die Webcam schickt alle fünf Minuten eine jpg-Datei ins Quellverzeichnis. Wenn das Script auch alle fünf Minuten läuft wäre im Quellverzeichnis immer nur max eine Datei drin. Diese Datei müsste das Script einfach nur da rausziehen, in einen bestimmten Namen umbenennen und diese in ein anderes Verzeichnis schreiben. Da diese Datei nach dem ersten Durchlauf dann ja schon vorhanden ist muss sie eben immer wieder überschrieben werden.

        Ich denke mir dass das eigentlich nicht so allzu schwer sein sollte, bekomme es aber leider einfach nicht hin

        Kommentar


        • #5
          PHP-Code:
          rename('path/to/file/old-filename.jpg''path/to/file/new-filename.jpg'); 
          mfG

          komisch: Kaum macht man`s richtig funktioniert`s a scho.

          Kommentar


          • #6
            Zitat von APH Beitrag anzeigen
            PHP-Code:
            rename('path/to/file/old-filename.jpg''path/to/file/new-filename.jpg'); 
            mfG
            Thx, aber dafür müsste doch der Name der Quelldatei bekannt sein, oder? Der ist aber immer ein anderer. Der Dateiname beginnt immer mit "Schedule_xxxxx.jpg wobei die xxxx für den Timestamp stehen. Ich bräuchte etwas in die Richtung
            PHP-Code:
            rename('path/to/file/Schedule_*.jpg''path/to/file/new-filename.jpg'); 
            Aber so wie ich das verstanden habe funktioniert ja das "*.jpg" hier wohl nicht.

            Kommentar


            • #7
              Verzeichnis auslesen http://php-de.github.io/jumpto/verzeichnis-auslesen/ und auf jede darin vorhandene Datei den rename() ausführen.
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                So wär dann die Idee, funktioniert aber auch wieder nicht

                PHP-Code:
                <?php
                $dir 
                '/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam/FI9805W_C4D6553A97B5/snap/';
                $handle opendir($dir);
                while (
                false !== ($file readdir($handle))) {
                    
                $file;
                }
                closedir($handle);
                rename($file'/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg');
                unlink($file);
                ?>
                Fehlermeldung:
                Warning: rename(,/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg) [function.rename]: No such file or directory in /www/htdocs/w006b59f/wetter.hebertsfelden.info/camcopy.phpx on line 8

                Warning: unlink() [function.unlink]: No such file or directory in /www/htdocs/w006b59f/wetter.hebertsfelden.info/camcopy.phpx on line 9

                Kommentar


                • #9
                  - $file ist vermutlich leer

                  - unlink brauchst du dann nicht

                  - überhaupt stimmt da was nicht... das rename() gehört in die Schleife, so in der Art.. hier getippt, versuch mal

                  PHP-Code:
                  $base_dir    '/www/htdocs/w006b59f/wetter.hebertsfelden.info';
                  $source_dir  $base_dir.'/webcam/FI9805W_C4D6553A97B5/snap/';
                  $target_file $base_dir.'/webcam1/cambild.jpg';

                  $handle opendir($source_dir);
                  while (
                  false !== ($file readdir($handle))) {
                      
                  rename($file$target_file);
                  }
                  closedir($handle); 
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Es kommt wohl der Sache schon etwas näher. Hier mal die Fehlermeldung:

                    Warning: rename(..,/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg) [function.rename]: Device or resource busy in /www/htdocs/w006b59f/wetter.hebertsfelden.info/camcopy.phpx on line 8

                    Warning: rename(.,/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg) [function.rename]: Device or resource busy in /www/htdocs/w006b59f/wetter.hebertsfelden.info/camcopy.phpx on line 8

                    Warning: rename(cambild13426546.jpg,/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg) [function.rename]: No such file or directory in /www/htdocs/w006b59f/wetter.hebertsfelden.info/camcopy.phpx on line 8

                    Immerhin kann er schon mal die Datei im Quellverzeichnis lesen (cambild13426546.jpg). Nur das rename funktioniert noch nicht.

                    Ich hatte nur zum probieren ob die Pfade passen habe ich das mal probiert:

                    PHP-Code:
                    <?php
                    rename 
                    ('/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam/FI9805W_C4D6553A97B5/snap/cambild13426546.jpg''/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg');
                    ?>
                    Das würde ganz wunderbar funktionieren. Die Quelldatei verschwindet aus dem Quellverzeichnis und im Zielverzeichnis erscheint die Datei fertig umbenannt. Nur muss dabei halt auch der komplette Name der Quelldatei angegeben sein was hier nicht möglich ist.

                    Dann habe ich noch versucht mit glob an mein Ziel zu kommen:

                    PHP-Code:
                    <?php
                    $quelle 
                    glob('/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam/FI9805W_C4D6553A97B5/snap/*.jpg');
                    echo 
                    $quelle
                    ?>
                    Hier hatte ich gehofft das mir das echo den Namen der im Verzeichnis enthaltenen Datei ausgibt. Ist aber leider nicht so. Beim Ausführen des Scripts bekomme ich als Antwort einfach nur "Array" (ohne die Anführungszeichen). Was mir das sagen soll... KA

                    Kommentar


                    • #11
                      bekomme ich als Antwort einfach nur "Array" ... Was mir das sagen soll... KA
                      Naja, das es sich um ein Array handelt das du nicht mit echo ausgeben kannst..

                      PHP-Code:
                      print_r($quelleoder var_dump($quelle
                      Hast du dir den Link angesehen? http://php-de.github.io/jumpto/verze...n/#erweiterung
                      Bau das mal mit rein, so wie es ~ dort steht..

                      PHP-Code:
                      $base_dir    '/www/htdocs/w006b59f/wetter.hebertsfelden.info';
                      $source_dir  $base_dir.'/webcam/FI9805W_C4D6553A97B5/snap/';
                      $target_file $base_dir.'/webcam1/cambild.jpg';

                      $handle opendir($source_dir);
                      while (
                      false !== ($file readdir($handle))) {

                          
                      // Ausschluss von . und ..
                          
                      if ('.' == $file || '..' == $file) {
                              
                      // nächstes Element
                              
                      continue;
                          }

                          
                      // Ausschluss von Verzeichnisnamen
                          
                      if (is_dir($dir $file)) {
                              
                      // nächstes Element
                              
                      continue;
                          }

                          
                      rename($file$target_file);
                      }
                      closedir($handle); 
                      LG
                      The string "()()" is not palindrom but the String "())(" is.

                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        Zwischendurch mal nen herzlichen Dank für deine Mühe.
                        Hätte nicht gedacht das sowas kompliziert ist.

                        Die Links von dir schau ich mir schon auch immer an. Nur muss ich ehrlich sagen das ich das größtenteils nicht verstehe.

                        Ich hab das neue Script von dir gleich mal getestet. Klappt leider immer noch nicht ganz. Die Fehlermeldung:

                        Warning: rename(cambild13426546.jpg,/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg) [function.rename]: No such file or directory in /www/htdocs/w006b59f/wetter.hebertsfelden.info/camcopy.phpx on line 20

                        Das hier habe ich jetzt auch noch mal ausprobiert:

                        PHP-Code:
                        <?php
                        $quelle 
                        glob('/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam/FI9805W_C4D6553A97B5/snap/*.jpg');
                        print_r($quelle)
                        ?>
                        Das Ergebnis:

                        Array ( [0] => /www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam/FI9805W_C4D6553A97B5/snap/cambild13426546.jpg )

                        Da verwundert es nicht dass das Ergebnis nicht einfach mit rename in eine Datei umbenannt werden kann.

                        LG

                        Kommentar


                        • #13
                          Hätte nicht gedacht das sowas kompliziert ist
                          Nein eigenltich nicht, wenn man mit Hirn dabei ist... bin nur grade ganz wo anders

                          Warning: rename(cambild13426546.jpg,/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg) [function.rename]: No such file or directory in /www/htdocs/w006b59f/wetter.hebertsfelden.info/camcopy.phpx on line 20
                          Beim Ursprungsbild fehlt noch der Pfad, kannst ja die vorhandenen Pfad-Vars ergänzen.

                          Da verwundert es nicht dass das Ergebnis nicht einfach mit rename in eine Datei umbenannt werden kann.
                          Gibt ja immer mehrere (viele) Möglichkeiten.. Das verschiebt dir alle immer in das andere Verzeichnis, aber mit dem selben Namen (überschreiben).

                          PHP-Code:
                          $aQuelle glob('/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam/FI9805W_C4D6553A97B5/snap/*.jpg'); 

                          foreach (
                          $aQuelle as $imagepath) {
                              
                          rename($imagepath'/www/htdocs/w006b59f/wetter.hebertsfelden.info/webcam1/cambild.jpg');

                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            Holla die Waldfee, dass wars jetzt. Genau so klappts!

                            Spitze, der Herrgott vergelts dir mit einem reichen Kindersegen wie man hier so schön sagt
                            Oder ganz einfach... Vielen Dank!!!

                            LG und a guts Nächtle,
                            Oli.

                            Kommentar

                            Lädt...
                            X