PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pczib: Unable to open archive 'test.zip' in wb mode



boba
09-08-2005, 11:31
Jallo,
ich versuche gerade mit pclzib eine zipdatei von einem Ordner zu erstellen und bekommen folgende meldung:

Error : PCLZIP_ERR_READ_OPEN_FAIL (-2) : Unable to open archive 'test.zip' in wb mode


Die variablen werden alle richtig übergeben.
Am ende soll das sosein das ein User auf eine Link klickt und dann den download des zip files angeboten bekommt.

meine sourcen dazu sehen folgendermassen aus:


<?php

echo $titel = "$_GET[titel].zip";
echo "<br>";
echo $folder = "$_GET[folder]/shots/";
echo "<br>";

include_once('../sites/pclzip.lib.php');
$archive = new PclZip("$titel");
$v_list = $archive->create('$folder',
PCLZIP_OPT_REMOVE_PATH, '$folder');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
?>

undefined
09-08-2005, 12:31
Ändere mal diese Zeile

if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
nach

if (($this->zip_fd = @fopen($this->zipname, 'br')) == 0)
Welches System Windows Linux?

boba
09-08-2005, 12:37
ich arbeite unter linux(ubuntu) mit apache2.
nach der änderung kommt folgende meldung:

Error : PCLZIP_ERR_MISSING_FILE (-4) : File 'images/s/test/shots/' does not exists


Von wo führt den pclzip das packen aus, vielleicht liegts ja nur am pfad und pclzip will sonstwo die zip datei erstellen.
Die Berechtigungen hab ich temporär für alle verzeichnisse auf a+rw gesetzt
Ich habe auch schon probiert dem pfad mit einigen "../" zu ändern ohne erfolg.



test.zip
images/p/test/shots/

das erste ist der titel, 2te der pfad.
und so wird das alles übergeben:

sites/packem.php?folder=$thumbs[$sub]&titel=$titel\

undefined
09-08-2005, 12:42
chmoooooooooooooooooooooooooooooooood :D
chmod 0666 mein.zip

boba
09-08-2005, 12:44
gerade hat er eine zip datei erstellt nachdem ich ein ../ an die richtige stelle gepackt habe, jetzt muss er nur noch die zip im richtigen ordner ablegen und die ordnerstruktur nicht mit ins zip einbinden.

undefined
09-08-2005, 12:51
Ich dachte du willst entpacken ?


<?php

function build_zip( $d, $z, $f )
{
include('pclzip.lib.php');
$o = getcwd();
$d = realpath( $d );
chdir( $d );
touch( $z );
$pcl = new PclZip( $z );
$v = $pcl->create( $f );
if ( $v == 0 )
die( "Error : ".$pcl->errorInfo( true ) );

chmod ( $z, 0644 );
chdir( $o );
return realpath( $z );
}

echo build_zip( ".", "readme.txt.zip", "" );

?>

boba
09-08-2005, 18:17
ich habe das script in der ursprünglichen form wunderbar am laufen.

ein winziges problem besteht leider darin das es keine ordner und dateien packt in dessen Namen ein ' vorkommt.
Alle anderen phpscripte kommen damit zurecht, und in der BASH kann ich eine Datei mit hochkommata unter verwendung von "" erstellen.
Das komische ist das der Name auch richtig ans script übergeben wird

edit:
Mithilfe von der funktion stripslashes wird die datei erstellt, nur der download funktioniert mit $file noch nicht, obwohl wenn ich den wert von $file im browser paste oder per <a href> anspreche geht es :confused: .
dieses soll aber eh in eine eigene funktion ohne popup.


Error : PCLZIP_ERR_READ_OPEN_FAIL (-2) : Unable to open archive '../images/r/Rock\'n Roll/Rock\'n Roll.zip' in wb mode



<?php

echo $titel2 = "../$_GET[folder]/$_GET[titel].zip";
echo "<br>titel";
echo $titel = stripslashes("$titel2");
echo "<br>";

echo $titel1 = "$_GET[titel]";
echo "<br>";
echo $folder2 = "../$_GET[folder]/shots/";
echo "<br>";
echo $folder = stripslashes("$folder2");
echo "<br>";


include_once('../sites/pclzip.lib.php');

$archive = new PclZip("$titel");
$v_list = $archive->create("$folder",
PCLZIP_OPT_REMOVE_PATH, "$folder");

if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}

//echo "<a href=$titel>get</a>";
echo "<a href=../index.php?site=sites/galerie.php&alpha=$_GET[alpha]>back</a><br>";

echo "getting $titel1";
echo "<META HTTP-EQUIV=Refresh CONTENT='20;URL=\"$titel\"'>";
// echo "<META HTTP-EQUIV=Refresh CONTENT='10;URL=../index.php?site=sites/galerie.php&alpha='.$_GET[alpha].'>";

?>



PS: reichlich doof das wenn man das subjekt des treads ändert, diese änderung nicht in der treadübersicht sichtbar ist

undefined
09-08-2005, 20:05
Verwende am besten header( "content-type: " ); Siehe grep zip /etc/mime.types
In einem neuen Fenster.