#50141 [Fbk->Opn]: folders inside a zip archive are not displayed
| From: | samantha86 at web dot de | Date: | Wed, 11 Nov 2009 09:38:56 +0000 |
| Subject: | #50141 [Fbk->Opn]: folders inside a zip archive are not displayed | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-144446@lists.php.net to get a copy of this message | ||
ID: 50141
User updated by: samantha86 at web dot de
Reported By: samantha86 at web dot de
-Status: Feedback
+Status: Open
Bug Type: Zip Related
Operating System: windows (xp and 7)
PHP Version: 5.3.0
New Comment:
yes, this folder includes some other folders, which can be seen when
using a linux machine.
the structure should look like this:
myzipfile.zip
|_ /admin
|_ /core
|_ ...some othe folders...
|_ config.php
|_ ...some other files in the root of the zipfile...
the code i use to add the directories/files it looks exactly like
this:
<?php
...
//for the directories:
$zip->addDir(PATH."/admin", "/admin");
$zip->addDir(PATH."/core", "/core");"/languages");
...
for the files:
$zip->addFile(PATH."/backup/files/config.php", "config.php");
$zip->addFile(PATH."/backup/files/index.php", "index.php");
...
?>
Previous Comments:
------------------------------------------------------------------------
[2009-11-10 23:47:13] fa@php.net
If I open your zip file with 7-ZIP instead of the integrated windows
zip tool, there's a folder with a weird name.
Might be just a blank space, might be a null byte.
But in that folder I see many folders:
admin / backup / core / installation / and some more
Can you please verify that your generated subfolder name is not just
incorrectly set?
------------------------------------------------------------------------
[2009-11-10 20:03:02] samantha86 at web dot de
here is some example code, an already generated zip file can be
downloaded at my demoserver
http://steffisgarten.bplaced.net/chillyCMS/admin/tools.site.php?tool=backup
username: admin, pw: demo
maybe this can save you some time.
<?php
class Zipper extends ZipArchive {
public function addDir($path, $newname) {
$nodes = glob($path.DIRECTORY_SEPARATOR."*");
if (!empty($nodes)) {
foreach ($nodes as $node) {
//exclude temporary files
if (substr($node,-1)!="~") {
$newnode=substr($node,strlen($path)+1);
$newnode=$newname.DIRECTORY_SEPARATOR.$newnode;
if (is_dir($node)) {
$this->addDir($node,$newnode);
} else if (is_file($node)) {
$this->addFile($node,$newnode);
}
}
}
}
}
}
$zip=new Zipper();
if ($zip->open($file_dest, ZIPARCHIVE::CREATE)) {
$zip->addDir(PATH."/example", "/example");
} else {
echo "error";
}
?>
------------------------------------------------------------------------
[2009-11-10 19:31:27] pajoye@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
------------------------------------------------------------------------
[2009-11-10 19:26:28] samantha86 at web dot de
Description:
------------
hi,
i have a problem with files generated/altered via the ziparchive
class.
my problem is the same as Bug #39714, but i have been using php 5.3.0
instead of 5.2.x
i use to use ubuntu linux and i have NO problem there with extracting
the zip files. it does not matter on what server the zip files are
generated, windows or linux, it depends on the client where i try to
open one of these zip files.
the code for the zipfile generation looks like this:
Reproduce code:
---------------
<?php
class Zipper extends ZipArchive {
public function addDir($path, $newname) {
$nodes = glob($path.DIRECTORY_SEPARATOR."*");
if (!empty($nodes)) {
foreach ($nodes as $node) {
//exclude temporary files
if (substr($node,-1)!="~") {
$newnode=substr($node,strlen($path)+1);
$newnode=$newname.DIRECTORY_SEPARATOR.$newnode;
if (is_dir($node)) {
$this->addDir($node,$newnode);
} else if (is_file($node)) {
$this->addFile($node,$newnode);
}
}
}
}
}
}
?>
Expected result:
----------------
i'd like to receive a zipfile where i can see the files, but also the
directories wit the included files that are generated in a deeper
recursion of the function
Actual result:
--------------
under windows i only see the files that are in the root of the zip
archive, under ubuntu linux everything is ok.
thank you in advance for sacrificing your time
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=50141&edit=1