【发布时间】:2016-06-01 15:39:48
【问题描述】:
我正在尝试使用 ZipArchive 使用 getFromName 方法从 zip 文件中读取文件内容。我的文件名中有一个双点 (..)。这是我的代码:
$zip = new ZipArchive();
$zip->open('book.zip');
$content = $zip->getFromName('book/html/../README.md');
var_dump($content);
我的 zip 文件的结构是这样的:
Archive: book.zip
Length Date Time Name
--------- ---------- ----- ----
0 2016-06-01 11:09 book/
0 2016-06-01 11:02 book/html/
1855 2016-06-01 11:02 book/html/composer.json
2354 2016-06-01 11:09 book/README.md
--------- -------
4209 4 files
我的 PHP 脚本与我的 zip 文件位于同一目录中。 当我尝试列出使用 Linux 命令压缩的文件夹中的文件时,如下所示:
ls -l book/html/../README.md
完美运行。我不明白为什么 ZipArchive 不能正确读取这个相对路径。
注意:我知道我可以使用绝对路径读取文件:book/README.md,但我确实需要使用带有.. 的相对路径,因为文件路径是从另一个动态加载的地点,我无法控制它们。
【问题讨论】:
标签: php linux zip ziparchive