Zip-Datei downloadproblem

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

  • Zip-Datei downloadproblem

    Hallo Forum,

    ich versuche ein Backup-Script mit Hilfe der archive.php zu erstellen.

    Diese Script macht mir einen SQL-Dump und ein Backup der Website.

    Leider bekomme ich nach dem Download immer die Nachricht, "Fehler in gepackter Datei. Lasse ich die Datei auf dem Server und lade diese per ftp herunter, geht's.

    Hier mal der Code meines Scripts:

    PHP-Code:
    <?php
        
    include('ct_config.php');
        include(
    CT_ADDON_PATH.'archive/archive.php');
        require_once(
    CT_CLASS_PATH.'ct_user.php');
        
    //echo CT_CORE_PATH.'archive/archive.php<br />';
        //echo CT_TMP_PATH.'example.zip<br />';
        
    $mysql_config $GLOBALS['CT_DB_DATA'];
        
    $user_obj = new ctUser();
        
    $error false;
        
        if( (!
    $user_obj->isSystemAdmin()) || ($user_obj->isAdmin()) || ($user_obj->isGroupAnonymous())){
            echo 
    '<div style="text-align: center;">Sie haben nicht die Berechtigung ein Backup auszuführen!</div>';
            exit;    
        }

        
    $mysql_dump CT_TMP_PATH.'mysql.sql';
        
    $web_zip CT_TMP_PATH.'web.zip';
        
    $mysql_zip CT_TMP_PATH.'mysql.zip';
        
    $filename 'backup'.date("_Y-m-d_H-i-s").'.zip';
        
    $backup_zip CT_TMP_PATH.$filename;
        
    $dbhost $mysql_config->host;
        
    $dbuser $mysql_config->username;
        
    $dbpwd $mysql_config->password;
        
    $dbname $mysql_config->database;
        
    //MySQL Dump
        
    echo 'MySQL-Dump erzeugen!<br />';
        
    $conn = @mysql_connect($dbhost$dbuser$dbpwd);  
        if (!
    $conn) {                                                        
          die(
    mysql_error());
        }
        
    mysql_select_db($dbname);
        
    $f fopen($mysql_dump"w");
        
    $tables mysql_list_tables($dbname);
        while (
    $cells mysql_fetch_array($tables)) {
          
    $table $cells[0];
          
    fwrite($f,"DROP TABLE `$table`;\n"); 
          
    $res mysql_query("SHOW CREATE TABLE `$table`");
          if (
    $res) {
            
    $create mysql_fetch_array($res);
            
    $create[1] .= ";";
            
    $line str_replace("\n"""$create[1]);
            
    fwrite($f$line."\n");
     
    $data mysql_query("SELECT * FROM `$table`");
            
    $num mysql_num_fields($data);
            while (
    $row mysql_fetch_array($data)){
              
    $line "INSERT INTO `$table` VALUES(";
              for (
    $i=1;$i<=$num;$i++) {
                
    $line .= "'".mysql_real_escape_string($row[$i-1])."', ";
              }
              
    $line substr($line,0,-2);
              
    fwrite($f$line.");\n");
            }
          }
        }
        
    fclose($f);
        
        if(!
    $error){
            
    $backup = new zip_file($mysql_zip);
            
    $backup->set_options(array('inmemory' => 0'recurse' => 0'storepaths' => 0,'overwrite' => 1));
            
    $backup->add_files($mysql_dump);
            echo 
    'MySQL-Dump zippen!<br />';
            
    $backup->create_archive();
            if(
    count($backup->errors) > 0){
                
    $error true;
                echo 
    count($backup->errors).' Fehler beim MYSQL-Backup!<br />';
                echo 
    '<b>Fehler</b><pre>';
                
    print_r($backup->errors);
                echo 
    '</pre>';
                exit;
            }
        }
        
        
        
    $backup = new zip_file($web_zip );
        
    $backup->set_options(array('inmemory' => 0'recurse' => 1'storepaths' => 1,'overwrite' => 1));
        
    $backup->add_files(CT_WEB_PATH);
        echo 
    'WEBSITE zippen!<br />';
        
    $backup->create_archive();
        if(
    count($backup->errors) > 0){
            
    $error true;
            echo 
    count($backup->errors).' Fehler beim WEB-Backup!<br />';
            echo 
    '<b>Fehler</b><pre>';
            
    print_r($backup->errors);
            echo 
    '</pre>';
            exit;
        }
        
        if(!
    $error){
            
    $backup = new zip_file($backup_zip );
            
    $backup->set_options(array('inmemory' => 1'recurse' => 0'storepaths' => 0,'overwrite' => 1));
            
    $backup->add_files(array($web_zip$mysql_zip));
            echo 
    'Backup zippen!<br />';
            
    $backup->create_archive();
        }
        if(
    count($backup->errors) > 0){
            
    $error true;
            echo 
    count($backup->errors).' Fehler beim WEB-Backup!<br />';
            echo 
    '<b>Fehler</b><pre>';
            
    print_r($backup->errors);
            echo 
    '</pre>';
            exit;
        }
        
        
        
    unlink($mysql_dump);
        
    unlink($web_zip);
        
    unlink($mysql_zip);
        
        if(!
    $error){
            
    $backup->download_file();
        }
     
    ?>
    Die Klasse ist im Anhang.


    Hoffe mir kann jemand helfen.

    Danke
    Tom
    Angehängte Dateien

  • #2
    du möchtest error_reporting hochstellen.

    Kommentar


    • #3
      Hallo penizillin,

      error_reporting(E_ALL);

      zeigt mir keine Fehler.

      Das Zip-File wird ja erstellt, nur mit nach dem Download, kann ich es nicht öffnen.

      Tom

      Kommentar


      • #4
        ist die heruntergeladene datei gleich groß, wie die auf dem server? (byte-genauigkeit)

        Kommentar


        • #5
          Nein, das ist ja das Problem,

          die Datei die auf dem Server gespeichert wird, hat eine andere Größe
          als die, die aus dem Speicher kommt.

          Habe auch schon probiert, die auf dem Server liegende Datei zu übermitteln, habe dann aber das gleiche Problem.

          Tom

          Kommentar


          • #6
            muss man dir alles aus der nase ziehen? wie groß sind die beiden denn nun?
            wenn die heruntergeladene größer ist, würde ich vorschlagen, dass du mal reinschaust, evtl. erkennst du am anfang etwas.

            Kommentar


            • #7
              Ok, sorry ist schon Spät.

              Die Datei auf dem Server ist 673.167 und die übern Download kommt,
              673.269.

              Beim 2. Versuch

              Server: 672.329
              Download: 673.269

              Die Dateien auf dem Server lassen sich öffnen, die vom Download
              kommt Fehler in gepackter Date. (Doppelklick mit Tozal Commander).

              WinAce: "Die ZIP-Datei ist defekt".

              Tom

              Kommentar


              • #8
                reinschauen im sinne von einem text-editor, optimalerweise mit einer hexadezimalen-ansicht. die frage, die es zu beantworten gilt: was steht in den 900 bytes?

                Kommentar


                • #9
                  OK.

                  In der Download-Datei stehen noch Infos aus dem Quelltet mit drin !???

                  PHP-Code:
                  {[Abmelden]}
                  System-Admin
                  {Site einstellungen}
                  {
                  File einstellungen}
                  {
                  Dateien anzeigen}
                  {
                  Backup}
                   
                  Admin
                  {Ordner}
                  {
                  User}
                  {
                  Benutzergruppen}
                  {
                  Dateiverwaltung}
                  Backup wird gestartet
                  Notice
                  Constant CT_WEB_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 10

                  Notice
                  Constant CT_TEMPLATE_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 12

                  Notice
                  Constant CT_CONTENT_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 14

                  Notice
                  Constant CT_CORE_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 16

                  Notice
                  Constant CT_ADDON_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 18

                  Notice
                  Constant CT_TMP_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 20

                  Notice
                  Constant CT_CLASS_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 22

                  Notice
                  Constant CT_SMARTY_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 24

                  Notice
                  Constant CT_SMARTY_COMPILE_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 26

                  Notice
                  Constant CT_SMARTY_CACHE_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 28

                  Notice
                  Constant CT_MODULE_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 30

                  Notice
                  Constant CT_ADMIN_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 32

                  Notice
                  Constant CT_STORAGE_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 34

                  Notice
                  Constant CT_SMARTY_PLUGIN_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 36

                  Notice
                  Constant CT_FPDF_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 38

                  Notice
                  Constant CT_IMAGEMAGICK_PATH already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 41

                  Notice
                  Constant SITE_ID already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 89

                  Notice
                  Constant LANGUAGE_ID already defined in /home/www/ph243/html/phpfilemanager.code-team.de/ct_config.php on line 90
                  Array
                  (
                      [
                  0] => /admin,job-backup.html
                  )

                  NoticeUndefined propertycontent_id in /home/www/ph243/html/phpfilemanager.code-team.de/framework/classes/ct_request.php on line 14
                  MySQL
                  -Dump erzeugen!
                  MySQL-Dump zippen!

                  NoticeUndefined propertyerrors in /home/www/ph243/html/phpfilemanager.code-team.de/framework/scripts/backup.php on line 64
                  WEBSITE zippen
                  !

                  NoticeUndefined propertyerrors in /home/www/ph243/html/phpfilemanager.code-team.de/framework/scripts/backup.php on line 80
                  Backup zippen
                  !
                  Backup zippen!

                  NoticeUndefined propertyerrors in /home/www/ph243/html/phpfilemanager.code-team.de/framework/scripts/backup.php on line 105 
                  Wie kommen die darein? Besser, wie kann ich das Problem lösen?

                  Tom

                  Kommentar


                  • #10
                    tjaaa, da haben wir es.

                    dein script darf keine ausgaben vor dem download machen (genauer: header aufruf. aber das kannst du nicht wissen, weil du mit größter wahrscheinlichkeit keine ahnung hast, wie die klasse funktioniert, die du verwendest).

                    Kommentar


                    • #11
                      Original geschrieben von TomGold
                      In der Download-Datei stehen noch Infos aus dem Quelltet mit drin !???
                      OffTopic:
                      Immer wieder erstaunlich, zu welchen Erkenntnissen man gelangen kann, wenn man sich erst mal entschlossen hat, es mit Debugging zu versuchen (oder zumindest dazu überredet werden konnte).
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Ist natürlich blöd, wenn man dann einen Link auf der Website hat, der das Backup anstoßen soll.

                        Habe ich da keine Möglichkeit?

                        System(); kann ich nicht nutzen da mein Provider keine Systemaufrufe zuläst.

                        Wie händelt phpMyAdmin das? Da habe ich doch auch schon eine Ausgabe. Oder liegt es speziell an dieser Klasse?

                        Tom

                        Kommentar


                        • #13
                          es liegt m.e. insbesondere an dir und deinem skript. sorge dafür, dass du keine ausgabe machst, bevor du ...->download_file() aufrufst.

                          Kommentar


                          • #14
                            Man könnte eventuell das Script dazu bewegen, in bestimmten Fällen keine Ausgaben zu erzeugen ... Gerüchte besagen, es existierten Sprachkonstrukte, die sich IF oder ähnlich nennen ...
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              OK,

                              Danke.

                              Werde mich in 2-3 Stunden weiter damit beschäftigen.

                              Tom

                              Kommentar

                              Lädt...
                              X