Ankündigung

Einklappen
Keine Ankündigung bisher.

Kopierscript - encoding weg ?

Einklappen

Neue Werbung 2019

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

  • Kopierscript - encoding weg ?

    Hallo zusammen,

    ich habe ein php script aus dem Internet, das mir einen Ordner mit einer xml file von a nach b kopiert. Das ganze findet auf einem linux debian rootserver statt. Problem ist nur das nach dem kopieren anscheihnend das encoding der xml verloren geht, weil z.B. >> als >> ausgegeben wird. Liegt das am Script oder woran könnte das liegen ?

    PHP-Code:
    function dir_copy($srcdir$dstdir$offset ''$verbose false)
        {

        if(!isset(
    $offset)) $offset=0;
        
    $num 0;
        
    $fail 0;
        
    $sizetotal 0;
        
    $fifail '';
        if(!
    is_dir($dstdir)) mkdir($dstdir);
        if(
    $curdir opendir($srcdir)) {
            while(
    $file readdir($curdir)) {
                if(
    $file != '.' && $file != '..') {
    //                $srcfile = $srcdir . '\\' . $file;    # deleted by marajax
    //                $dstfile = $dstdir . '\\' . $file;    # deleted by marajax
                    
    $srcfile $srcdir '/' $file;    # added by marajax
                    
    $dstfile $dstdir '/' $file;    # added by marajax
                    
    if(is_file($srcfile)) {
                        if(
    is_file($dstfile)) $ow filemtime($srcfile) - filemtime($dstfile); else $ow 1;
                        if(
    $ow 0) {
                            if(
    $verbose) echo "Copying '$srcfile' to '$dstfile'...<br />";
                            if(
    copy($srcfile$dstfile)) {
                                
    touch($dstfilefilemtime($srcfile)); $num++;
                                
    chmod($dstfile0777);    # added by marajax
                                
    $sizetotal = ($sizetotal filesize($dstfile));
                                if(
    $verbose) echo "OK<br />";
                                echo 
    ".";
                                
    flush();
                            }
                            else {
                                echo 
    "Error: File '$srcfile' could not be copied!<br /><br />";
                                
    $fail++;
                                
    $fifail $fifail.$srcfile.'|';
                            }
                        }
                    }
                    else if(
    is_dir($srcfile)) {
                        
    $res explode(',',$ret);
    //                    $ret = dircopy($srcfile, $dstfile, $verbose); # deleted by patrick
                        
    $ret $this->dir_copy($srcfile$dstfile$verbose); # added by patrick
                        
    $mod explode(',',$ret);
                        
    $imp = array($res[0] + $mod[0],$mod[1] + $res[1],$mod[2] + $res[2],$mod[3].$res[3]);
                        
    $ret implode(',',$imp);
                        echo 
    ":<br />";
                    }
                }
            }
            
    closedir($curdir);
        }
        
    $red explode(',',$ret);
        
    $ret = ($num $red[0]).','.(($fail-$offset) + $red[1]).','.($sizetotal $red[2]).','.$fifail.$red[3];
        return 
    $ret;

    Danke für Hilfe.

    mfg Jojo


  • #2
    auch wenn dieser Code nicht hübsch aussieht glaub ich nicht unbedingt daran, dass der Fehler hier liegt ....

    hast du copy ( Quelle , Ziel ) selbst geschrieben ? da würd ich den Fehler eher suchen

    wo lässt du dir hinterher die xml-Datei anzeigen?
    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

    Kommentar


    • #3
      Die xml file wird dann von einer php cgi anwendung eingelesen. Hm eventuell könnte es auch an der php file liegen, weil die auch mit kopiert wird. Weiß irgendwie grad nimmer weiter

      mfg Jojo

      Kommentar


      • #4
        hm .. kannst du mal den Code der copy - Funktion hier posten ..?

        und öffne die kopierte XML-Datei mal in einem Browser / Editor, schau mal, ob das noch nach xml aussieht - und ansonsten musst du beim CGI-Script ran, dass die XML-Datei verarbeitet .
        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

        Kommentar


        • #5
          Normalerweise macht man sowas auch nicht mir purem PHP, meistens übernimmt das kopieren ein bash-script, dass über exec aufgerufen wird.

          Kommentar


          • #6
            Zitat von eagle275 Beitrag anzeigen
            hm .. kannst du mal den Code der copy - Funktion hier posten ..?
            [MAN]copy[/MAN]
            sigpic

            Kommentar


            • #7
              so ist das halt, wenn man Fragen nicht beantwortet - ich hatte ihn ja extra gefragt, ob copy was selbstgeschriebenes ist ....


              mE kann so ein Copy quasi auf Byte-ebene trotzdem das encoding nicht ändern - bleibt das CGI-script, dass die Daten wohl falsch interpretiert
              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

              Kommentar


              • #8
                Das CGI-Script interpretiert die Daten richtig, weil wenn ich die xml hochlade und nicht per php script kopiere, dann funktionierts. Also muss es am Script liegen... Die xml Datei wird noch per simplexml bearbeitet aber das kanns ja eigentlich nicht sein, weil das klappt wenn ichs manuell kopiere.

                mfg Jojo

                Kommentar

                Lädt...
                X