【问题标题】:Unzip an archive in memory in PHP在 PHP 中解压缩内存中的存档
【发布时间】:2014-07-22 01:37:34
【问题描述】:

是否可以在内存中解压缩 PHP 中的存档,即不写入磁盘?我正在使用 curl 从 GitHub 获取 .zip 文件,并希望在不处理磁盘权限的情况下提取它。

 $zip_file = Curl::get_request("https://github.com/user/repo/archive/v1.0.zip");

【问题讨论】:

  • 您可以将单个文件提取到php://temp,但是您会如何处理它呢?如果您将整个存档提取到内存中,那会怎样?
  • 它被解析并插入到数据库中。

标签: php zip unzip


【解决方案1】:

看看 ZIP 函数http://php.net/manual/en/book.zip.php

您可以使用 zip_open 和 zip_read 函数访问 ZIP 文件。您还可以使用 zip:// 协议访问 ZIP 中的文件

file_get_contents('zip://test.zip#test.txt'); 

【讨论】:

  • 我不认为我可以将二进制/字符串传递给zip_open()。该文件必须存在于磁盘上。寻找写入磁盘的方法。
  • 不能写到tmp?
  • 我可以,但想知道是否可以在内存中执行此操作?对我的用例来说,写入和写入磁盘只是浪费。
  • ZipArchive 不能与“内存映射文件”一起使用,所以不能。你最好的办法是把它写成 tmp 并用 zip 协议访问它。重复您的问题已回答:stackoverflow.com/questions/7391969/…
  • 这可行,但我必须指定一个绝对路径,例如:file_get_contents('zip://'. dirname(__FILE__) .'test.zip#test.txt');
猜你喜欢
  • 1970-01-01
  • 2011-11-15
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 2011-01-20
  • 1970-01-01
相关资源
最近更新 更多