在php中提取ZIP,覆盖所有内容

Posted

技术标签:

【中文标题】在php中提取ZIP,覆盖所有内容【英文标题】:Extract ZIP in php, overwriting everything 【发布时间】:2019-02-03 04:05:21 【问题描述】:

我正在使用以下方法提取服务器端 .zip:

<?php
$unzip = shell_exec("unzip zipp1.zip");
?>

它工作正常,但它不会覆盖现有文件(我需要它!)。

所有内容都在同一个文件夹中,chmod 777。

我可以添加一些东西来修复吗? 天呐!

【问题讨论】:

-o 切换,当有疑问时man unzip 哇!它完美地工作!不到 3 分钟就解决了问题……你太棒了! :) 非常感谢!!! 【参考方案1】:

如果真的需要使用shell,可以写unzip -o zipp1.zip

不过,PHP 有一个用于处理 Zip 档案的库,名为 ZipArchive: http://php.net/manual/en/class.ziparchive.php

在那里你可以extractTo 默认覆盖:http://php.net/manual/en/ziparchive.extractto.php

禁用shell_exec() 通常是一种很好的安全做法,因此建议使用 PHP 的库。

【讨论】:

另外请注意,如果您的目标是使用 PHP 处理 zip 中的文件,那么您甚至不需要提取文件。您可以使用 zip stream wrapper 直接从 PHP 读取文件内容。

以上是关于在php中提取ZIP,覆盖所有内容的主要内容,如果未能解决你的问题,请参考以下文章

PHP Zip:提取目录的内容

在 PHP 中是不是可以在不先提取其内容的情况下检查 Zip 文件的内容?

如何在不使用 python 保留目录的情况下提取文件夹中的所有 .zip 扩展名?

阻止人们通过表单上传恶意 PHP 文件

如何在不实际提取文件的情况下使用 VBScript 读取 .zip 文件的内容?

使用 Python 将 zip 文件和嵌套的 zip 文件提取到目标目录中