Dateien in Zip-Archiv packen!

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

  • Dateien in Zip-Archiv packen!

    Hallo!
    Ich will ein paar Dateien automatisch in ein Zip-Archiv packen.
    Ghet dass auch ohne eine "zip-Bibliothek"?
    Weil irgendwie finde ich nur Sachen mit:
    PHP-Code:
    $zip = new ZipArchive

  • #2
    Zitat von Kangarooo Beitrag anzeigen
    Ghet dass auch ohne eine "zip-Bibliothek"?
    Klar, aber da musst du den Komprimierungsalgorithmus selbst programmieren, aber wer will das schon? Wieso willst du keine Bibliothek nutzen?

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Mh, wo bekomm ich denn die Bibliothek her?? das ist gerade irgendwie sehr verwirrend für mich, irgendwie komm ich da nicht zurecht!

      Kommentar


      • #4
        PHP: Installation - Manual
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Also ich arbeite ja mit einem MAC, und da ist das Zip Programm ja schon drauf! Wie kann ich das nutzen?? Weil übers Terminal kann ich ja asuch schon das ZIP Programm aufrufen!

          Kommentar


          • #6
            Du verstehst den Unterschied zwischen einem Packprogramm und der ZIP-Erweiterung für PHP offenbar nicht. Wenn du, wie du sagst, irgendetwas automatisch mit PHP packen willst, wird dir dein vorinstallierter ZIP-Packer herzlich wenig helfen (es würde zwar über exec gehen, aber das wäre keine saubere Lösung).
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Also, ich benutze jetzt das Zip Programm vom Mac!
              Er erstellt auch eine Zipdatei, die ist aber nur 200 Bytes groß und es kommt folgende Fehelrmedlung:
              The file "test_234.zip" does not appear to be compressed or encoded. It is advised that you obtain further information about the contents of this file from the sender or provider of the file!

              Mein Code:
              PHP-Code:
                      system("zip ".$edvcode.".zip ".$dateien);
                      
              header('Content-Disposition: attachment; filename='.$edvcode.'.zip'); 
                      
              readfile($edvcode.'.zip'); 
              Wenn ich aber GENAU den Code, der bei system in Klammer steht in der Konsole eingebe, dann erstellt er ohne Probleme die Zip-Datei!

              Das hier steht praktisch dann im System drin:

              PHP-Code:
              system(zip test_234.zip /Users/me/Sites/files/foto1.jpg /Users/me/Sites/files/foto2.jpg); 

              Kommentar


              • #8
                Die Frage, warum du es partout nicht mit der ZIP-Library machen willst, stelle ich nicht mehr.

                Mögliche Ursachen:
                • der Benutzer, unter dem PHP ausgeführt wird, hat nicht die entsprechenden Rechte
                • die Arbeitsverzeichnisse stimmen nicht überein
                • irgendetwas anderes, das mir grad nicht einfällt


                Amica
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Ich habe die vorgabe, es mit dem bereits vorhandenen programm zu machen! Deswegen! Naja, dann schau ich mal...echt komisch! Aber danke für die Hilfe!!

                  Kommentar


                  • #10
                    Zitat von Kangarooo Beitrag anzeigen
                    Ich habe die vorgabe, es mit dem bereits vorhandenen programm zu machen!
                    Wer gibt denn solche sinnbefreiten Vorgaben? Aber die readfile-Funktion darfst du schon benutzen oder solltest du das vielleicht lieber über eine Prozesspipe von der Konsole streamen?
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Zitat von Kangarooo Beitrag anzeigen
                      Ich habe die vorgabe, es mit dem bereits vorhandenen programm zu machen! Deswegen! Naja, dann schau ich mal...echt komisch! Aber danke für die Hilfe!!
                      exec()
                      Das zeigt dir ALLE Ausgaben des aufgerufenen Kommandozeilenprogramms an -- system() beschränkt sich auf die letzte Zeile.

                      Werde dir klar, was die einzelnen Parameter bedeuten und lass dir nicht nur die Ausgaben, sondern auch die zusammengebastelte Kommandozeile vor dem Aufruf von exec() anzeigen:

                      PHP-Code:
                      // das ist blöd:
                       
                      system("zip ".$edvcode.".zip ".$dateien);

                      // das ist etwas schlauer:
                      // besser waere es, shellescapecmd() auf die einzelnen parameter anzuwenden
                      $cmdline 'zip ' $edvcode '.zip ' $dateien;

                      var_dump($cmdline);

                      exec($cmdline$output$return_value);

                      var_dump($return_value);
                      var_dump($output); 
                      Und wenn ich mir den von dir zusammengestoppelten Kommandozeilenaufruf
                      "zip ".$edvcode.".zip ".$dateien
                      so ansehe, würde ich mal fragen: Ist $dateien zufälligerweise ein Array?

                      Wenn du $cmdline in einer Shell (oder wie auch immer die CLI-Fenster unter dem komischen Betriebssystem heißen) testest, sollten auch exakt die gleichen Bedingungen gelten. Bspw. muss dem PHP-Script der Pfad zu "zip" nicht bekannt sein. Stelle das sicher oder verwende den kompletten Pfad.
                      Zuletzt geändert von fireweasel; 14.01.2010, 23:50. Grund: typo
                      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                      Kommentar


                      • #12
                        Zitat von fireweasel Beitrag anzeigen
                        Wenn du $cmdline in einer Shell (oder wie auch immer die CLI-Fenster unter dem komischen Betriebssystem heißen)
                        Das komische Betriebssystem ist jetzt seit einiger Zeit schon unixoid und kommt mit Bash als Standardshell daher.
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          Also $dateien ist KEIN array!! Sondern die varaible habe ich mir selber zusammengebastelt! und die ausgabe sieht genauso aus, wie sie in system() eingetragen werden müsste um das ergebnis zu erzielen! Also readfile() soll ich verwenden!

                          Kommentar


                          • #14
                            Zitat von Kangarooo Beitrag anzeigen
                            Also readfile() soll ich verwenden!
                            Ich weiß, das war doch nur Spaß, wenn auch etwas sarkastisch
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Kommentar


                            • #15
                              Zitat von Kangarooo Beitrag anzeigen
                              Also $dateien ist KEIN array!! Sondern die varaible habe ich mir selber zusammengebastelt! und die ausgabe sieht genauso aus, wie sie in system() eingetragen werden müsste um das ergebnis zu erzielen! Also readfile() soll ich verwenden!
                              Wäre es zuviel von dir verlangt, das nicht nur von mir erwähnte exec() zu verwenden, die Ausgaben und Rückgabewerte zu analysieren und eventuell hier zu veröffentlichen? Ganz offensichtlich funktioniert dein Kommandozeilenbefehl in einer Shell-Umgebung anders, als wenn er von einem PHP-Script gestartet wurde. Und ohne Ansicht der Fehlermeldungen artet das in Rätselei aus. Und lass bitte readfile(), header() usw. weg. Beim Debuggen stört das nur. Du solltest erstmal den Packvorgang zum Laufen bekommen, bevor du dessen (vermeintliches) Ergebnis über den Webserver an einen Browser auslieferst.

                              Zitat von unset Beitrag anzeigen
                              Das komische Betriebssystem ist jetzt seit einiger Zeit schon unixoid und kommt mit Bash als Standardshell daher.
                              unixoid == komisches Betriebssystem
                              Zumindest sind die Verknüpfungen in meinem Hirn so angelegt.
                              Zuletzt geändert von fireweasel; 15.01.2010, 11:27.
                              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                              Kommentar

                              Lädt...
                              X