Erstellung eines .zip Archives mit reinem PHP
Hi,
da ich bei der bisherigen Suche nichts gefunden habe, was ohne
Unterstützung von Zusatzmodulen auskommt.
Daher die Fragen:
Ist es möglich allein mit PHP Zip Archive zu erstellen ohne zusätzliche
Module, die womöglich nicht überall verfügbar sind?
Kennt jemand fertige Lösungen, welche mit PHP implementiert wurden und
frei verfügbar sind (ohne strenge Copyleft Lizenz wenn möglich)?
Die Anforderungen, die ich habe sind da eher gering. Brauche nur die
Möglichkeit größere Anzahlen von Dateien in ein Archiv zum Download zu
packen, weder Kompression noch Verschlüsselung sind für mich relevant.
Schonma Danke für die Antworten bzw. Sry, wenn die Frage trivial ist. :)
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Erstellung eines .zip Archives mit reinem PHP
On Wed, 05 Dec 2007 18:17:56 +0100 Christoph Herrmann wrote:
> da ich bei der bisherigen Suche nichts gefunden habe, was ohne
> Unterstützung von Zusatzmodulen auskommt.
Hast Du <http://www.php.net/manual/en/ref.zip.php> gefunden und
gelesen?
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Stefan - die gefälligste Inkarnation von kalt!
(Sloganizer)
Re: Erstellung eines .zip Archives mit reinem PHP
Stefan Froehlich schrieb:
> Hast Du <http://www.php.net/manual/en/ref.zip.php> gefunden und
> gelesen?
gefunden, gelesen und auch schon ausprobiert ja. :) Auf meinem Webspace
funktioniert es, bei mir lokal nicht, ich musste erst die Einstellung in
der php.ini anschalten. Kann man denn davon ausgehen, dass diese Modul
größtenteils unterstützt wird von den Providern her bei Webspace sowie
Webservern?
Da ich aber dazu geneigt bin unabhängig von solchen Einstellungen zu
sein hab ich gedacht suche ich mir lieber eine Lösung die ohne solche
Zusatzmodule auskommt.
Kann man solche Module eigentlich in PHP abfragen um zumindest eine
Meldung ausgeben zu können, wenn dieses nicht angeschaltet ist?
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Erstellung eines .zip Archives mit reinem PHP
Christoph Herrmann schrieb:
> Stefan Froehlich schrieb:
>> Hast Du <http://www.php.net/manual/en/ref.zip.php> gefunden und
>> gelesen?
> gefunden, gelesen und auch schon ausprobiert ja. :) Auf meinem Webspace
> funktioniert es, bei mir lokal nicht, ich musste erst die Einstellung in
> der php.ini anschalten. Kann man denn davon ausgehen, dass diese Modul
> größtenteils unterstützt wird von den Providern her bei Webspace sowie
> Webservern?
Von der Erweiterung wird abgeraten, da sie nicht mehr gepflegt wird. Es
gibt eine PECL-Erweiterung die du nutzen kannst oder eben zlib. Für
letztere gibt es in PEAR ein Paket "Archive_Zip" mit dem du dann die
Archive bauen kannst.
Da du schreibst, dass du gar keine Komprimierung benötigst, könntest du
auch einfach TAR verwenden. Dazu gibt es ebenfalls in PEAR ein Paket
"Archive_Tar", welches ohne jegliche Erweiterungen auskommt.
> Da ich aber dazu geneigt bin unabhängig von solchen Einstellungen zu
> sein hab ich gedacht suche ich mir lieber eine Lösung die ohne solche
> Zusatzmodule auskommt.
Ansich eine gute Idee, aber die Lösung wird dadurch enorm langsam und
braucht unnötig viele Resourcen. Gerade in diesem Fall (Zip) würde ich
nichts eigenes Frickeln wollen, sondern stattdessen die zlib-Erweiterung
verwenden.
> Kann man solche Module eigentlich in PHP abfragen um zumindest eine
> Meldung ausgeben zu können, wenn dieses nicht angeschaltet ist?
if(!extension_loaded('zip')) {
...
}
<http://de2.php.net/manual/en/function.get-loaded-extensions.php>
<http://de2.php.net/manual/en/function.extension-loaded.php>
<http://de2.php.net/manual/en/function.dl.php>
--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
Re: Erstellung eines .zip Archives mit reinem PHP
Thomas Hamacher schrieb:
> Von der Erweiterung wird abgeraten, da sie nicht mehr gepflegt wird. Es
> gibt eine PECL-Erweiterung die du nutzen kannst oder eben zlib. Für
> letztere gibt es in PEAR ein Paket "Archive_Zip" mit dem du dann die
> Archive bauen kannst.
Bei PEAR hab ich ehrlich gesagt bisher noch nichts gefunden was mich vom
Hocker reißt. Aber das werde ich mir mal anschauen, vielleicht lohnt es
sich ja auch, PEAR mit in mein Projekt einzubinden (hoffe ja, dass es
keinen Copyleft hat, da sich dies wohl nicht mit meiner Lizenz verträgt).
> Da du schreibst, dass du gar keine Komprimierung benötigst, könntest du
> auch einfach TAR verwenden. Dazu gibt es ebenfalls in PEAR ein Paket
> "Archive_Tar", welches ohne jegliche Erweiterungen auskommt.
Stimmt, bei Archiven denkt man halt immer gleich an Zip. Wenn Tar da
etwas weniger Voraussetzungen braucht ist es natürlich etwas besser
Umsetzbar.
> Ansich eine gute Idee, aber die Lösung wird dadurch enorm langsam und
> braucht unnötig viele Resourcen. Gerade in diesem Fall (Zip) würde ich
> nichts eigenes Frickeln wollen, sondern stattdessen die zlib-Erweiterung
> verwenden.
da gebe ich dir natürlich recht. Gerade komplexere Dinge wie Kompression
und Verschlüsselung ist ja in der Regel etwas Performanceintensiver und
in PHP nicht so zeitsparend umsetzbar. Und gerade bei solchen
Standardsachen nehme ich ungern Eigenlösungen, da man hier wirklich nur
das Rad neu erfindet ohne wirklichen Nutzen davon und solche Dinge ja
nicht unbedingt trivial in der Erstellung und Wartung sind.
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Erstellung eines .zip Archives mit reinem PHP
Christoph Herrmann schrieb:
> Thomas Hamacher schrieb:
>> Von der Erweiterung wird abgeraten, da sie nicht mehr gepflegt wird. Es
>> gibt eine PECL-Erweiterung die du nutzen kannst oder eben zlib. Für
>> letztere gibt es in PEAR ein Paket "Archive_Zip" mit dem du dann die
>> Archive bauen kannst.
>
> Bei PEAR hab ich ehrlich gesagt bisher noch nichts gefunden was mich vom
> Hocker reißt. Aber das werde ich mir mal anschauen, vielleicht lohnt es
> sich ja auch, PEAR mit in mein Projekt einzubinden
Also ich hab mir nicht viele PEAR-Pakete angeschaut, aber die meisten
davon kannst du in die Tonne hauen. Sie funktionierten zwar teilweise,
aber die Quellen willst du dir gar nicht anschauen. Teilweise hab ich
das Gefühl, dass die Autoren die OO nicht so ganz verstanden haben.
Es gibt aber auch richtig gute Pakete, wie die Sachen von Sebastian
Bergmann und wahrscheinlich unzählige gute Pakete, die ich gar nicht
kenne. Von daher kann ich dir nur raten dir genau anzuschauen was du da
aus PEAR in dein Projekt integrierst.
Die Archive_Tar-Klasse ist (wie ich das sehe) auch relativ autark,
sodass du sie wahrscheinlich auch einfach extrahieren kannst. Oder du
implementierst das selbst und holst dir aus PEAR einfach nur Ideen.
<http://cvs.php.net/viewvc.cgi/pear/Archive_Tar/Archive/>
> (hoffe ja, dass es
> keinen Copyleft hat, da sich dies wohl nicht mit meiner Lizenz verträgt).
<http://www.php.net/license/3_0.txt>
>> Da du schreibst, dass du gar keine Komprimierung benötigst, könntest du
>> auch einfach TAR verwenden. Dazu gibt es ebenfalls in PEAR ein Paket
>> "Archive_Tar", welches ohne jegliche Erweiterungen auskommt.
> Stimmt, bei Archiven denkt man halt immer gleich an Zip. Wenn Tar da
> etwas weniger Voraussetzungen braucht ist es natürlich etwas besser
> Umsetzbar.
Allerdings könnte es sein, dass deine Benutzer mit Tarballs nichts
anfangen können. Zwar beherrscht das Format jeder universelle Entpacker,
aber ZIP-Support ist z.B. in WindowsXP direkt integriert.
--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
Re: Erstellung eines .zip Archives mit reinem PHP
Thomas Hamacher schrieb:
> Also ich hab mir nicht viele PEAR-Pakete angeschaut, aber die meisten
> davon kannst du in die Tonne hauen. Sie funktionierten zwar teilweise,
> aber die Quellen willst du dir gar nicht anschauen. Teilweise hab ich
> das Gefühl, dass die Autoren die OO nicht so ganz verstanden haben.
Vieles davon ist PHP 4 kompatible, was den halbherzigen
objektorientierten Stil erklären könnte. Aber hier teile ich deine
Meinung voll und ganz.
> Es gibt aber auch richtig gute Pakete, wie die Sachen von Sebastian
> Bergmann und wahrscheinlich unzählige gute Pakete, die ich gar nicht
> kenne. Von daher kann ich dir nur raten dir genau anzuschauen was du da
> aus PEAR in dein Projekt integrierst.
>
> Die Archive_Tar-Klasse ist (wie ich das sehe) auch relativ autark,
Stimmt, benötigt nur die PEAR Klasse. Aber schon diese gefällt mir nicht
wegen der Fehlerbehandlung, aber die kann man ja noch gut kapseln und
durch seine eigene Exceptionhierarchie ersetzen. :)
> sodass du sie wahrscheinlich auch einfach extrahieren kannst. Oder du
> implementierst das selbst und holst dir aus PEAR einfach nur Ideen.
>
> <http://cvs.php.net/viewvc.cgi/pear/Archive_Tar/Archive/>
Selbst implementieren ungern, da das wohl den Aufwand/Nutzen zu sehr
übersteigt. Daher lieber ein Paket, welches von einem Dritten
hinreichend Supportet wird.
> Allerdings könnte es sein, dass deine Benutzer mit Tarballs nichts
> anfangen können. Zwar beherrscht das Format jeder universelle Entpacker,
> aber ZIP-Support ist z.B. in WindowsXP direkt integriert.
Das stimmt allerdings. Wobei TAR dann eher als alternative geeignet
wäre, wenn zlib nicht unterstützt wird. Ich denke eine solche Mischung
wird sich bei mir dann einbürgern.
Aber ich denke ich habe alle Informationen die ich brauche und kann
diese für die Implementierung soweit fertig machen. Von daher Danke für
die Antworten.
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Erstellung eines .zip Archives mit reinem PHP
Am Wed, 05 Dec 2007 18:17:56 +0100, schrieb Christoph Herrmann
<herrmann [at] dragonprojects.de>:
> Hi,
>
> da ich bei der bisherigen Suche nichts gefunden habe, was ohne
> Unterstützung von Zusatzmodulen auskommt.
>
> Daher die Fragen:
>
> Ist es möglich allein mit PHP Zip Archive zu erstellen ohne zusätzliche
> Module, die womöglich nicht überall verfügbar sind?
>
> Kennt jemand fertige Lösungen, welche mit PHP implementiert wurden und
> frei verfügbar sind (ohne strenge Copyleft Lizenz wenn möglich)?
>
> Die Anforderungen, die ich habe sind da eher gering. Brauche nur die
> Möglichkeit größere Anzahlen von Dateien in ein Archiv zum Download zu
> packen, weder Kompression noch Verschlüsselung sind für mich relevant.
>
> Schonma Danke für die Antworten bzw. Sry, wenn die Frage trivial ist. :)
Ich hab's so gelöst:
Beispiel:
<?php
$zipfile = 'a_test.zip';
$zipfilepath = 'c:/temp/a_test.zip';
$path = 'C:/temp/';
$files = array(
'datei1.doc',
'datei2.pdf',
'datei3.jpg'
);
$zip = new ZipArchive();
$result = $zip->open($zipfilepath, ZipArchive::CREATE);
if ($result !== TRUE) {
exit("cannot open <$zipfilepath>\n");
}
foreach ($files as $file) {
$zip->addFile($path.$file, $file);
}
$zip->close();
?>
Re: Erstellung eines .zip Archives mit reinem PHP
Christian Aigner schrieb:
> Ich hab's so gelöst:
>
> Beispiel:
> <?php
> $zipfile = 'a_test.zip';
> $zipfilepath = 'c:/temp/a_test.zip';
>
> $path = 'C:/temp/';
>
> $files = array(
> 'datei1.doc',
> 'datei2.pdf',
> 'datei3.jpg'
> );
>
> $zip = new ZipArchive();
> $result = $zip->open($zipfilepath, ZipArchive::CREATE);
>
> if ($result !== TRUE) {
> exit("cannot open <$zipfilepath>\n");
> }
>
> foreach ($files as $file) {
> $zip->addFile($path.$file, $file);
> }
>
> $zip->close();
> ?>
Die Klasse hat mir auch gut gefallen, aber wenn diese nicht mehr
Supported wird ist diese keine Alternative für mich.
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Erstellung eines .zip Archives mit reinem PHP
Am Thu, 06 Dec 2007 14:59:34 +0100, schrieb Christoph Herrmann
<herrmann [at] dragonprojects.de>:
> Christian Aigner schrieb:
> > Ich hab's so gelöst:
> >
> > Beispiel:
> > <?php
> > $zipfile = 'a_test.zip';
> > $zipfilepath = 'c:/temp/a_test.zip';
> >
> > $path = 'C:/temp/';
> >
> > $files = array(
> > 'datei1.doc',
> > 'datei2.pdf',
> > 'datei3.jpg'
> > );
> >
> > $zip = new ZipArchive();
> > $result = $zip->open($zipfilepath, ZipArchive::CREATE);
> >
> > if ($result !== TRUE) {
> > exit("cannot open <$zipfilepath>\n");
> > }
> >
> > foreach ($files as $file) {
> > $zip->addFile($path.$file, $file);
> > }
> >
> > $zip->close();
> > ?>
>
> Die Klasse hat mir auch gut gefallen, aber wenn diese nicht mehr
> Supported wird ist diese keine Alternative für mich.
Der Support wurde meines Wissens nur für PHP 4 eingestellt:
"Because the PHP 4 zip extension is unmaintained ..."
Weiß jemand, ob das auch PHP 5 betrifft?
LG,
Christian
Re: Erstellung eines .zip Archives mit reinem PHP
Christoph Herrmann wrote:
> Hi,
>
> da ich bei der bisherigen Suche nichts gefunden habe, was ohne
> Unterstützung von Zusatzmodulen auskommt.
>
> Daher die Fragen:
>
> Ist es möglich allein mit PHP Zip Archive zu erstellen ohne zusätzliche
> Module, die womöglich nicht überall verfügbar sind?
>
> Kennt jemand fertige Lösungen, welche mit PHP implementiert wurden und
> frei verfügbar sind (ohne strenge Copyleft Lizenz wenn möglich)?
Schau Dir mal
http://www.phpconcept.net/phpzip/index.en.php
an.
Alternativ reicht es ev. auch schon, die Zip-Klasse aus PHPMyAdmin zu
übernehmen.
http://www.phpmyadmin.net/
/libraries/zip.lib.php
Jörg