douan3182
2016-08-11 02:06
浏览 2.7k
已采纳

PHP:ZipArchive :: close():重命名临时文件失败:没有这样的文件或目录

I cannot create a zip file. It gives me this error. A search turned up no results. This is my function.

  function CompressFile($fromExtractedFile)
  {
      $archive = new ZipArchive;

      if ($archive->open($fromExtractedFile.".zip", ZipArchive::OVERWRITE | ZipArchive::CREATE) === TRUE) {
          $archive->addFile($fromExtractedFile, 'payload.csv');
          $archive->close();
      }
      else {
          throw new Exception ("Compress operation to ZIP file failed. $fromExtractedFile -> $fromExtractedFile.zip");
      }
      return $fromExtractedFile.".zip";
  }

Console:

Compressing /tmp/bing_PeUYiT
PHP Warning 'yii\base\ErrorException' with message 'ZipArchive::close(): Renaming temporary file failed: No such file or directory'

Docs: http://php.net/manual/en/book.zip.php

PHP 5.6, Win 8.1, Cygwin 2.5.2

Here is the same in PsySh:

>>> $archive = new ZipArchive
=> ZipArchive {#199
     +"status": 0,
     +"statusSys": 0,
     +"numFiles": 0,
     +"filename": "",
     +"comment": "",
   }
>>> $archive->open('/tmp/bing_PeUYiT.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE)
=> true
>>> $archive->addFile('/tmp/bing_PeUYiT', 'payload.csv')
=> true
>>> $archive->close()
PHP warning:  ZipArchive::close(): Renaming temporary file failed: No such file or directory on line 1

图片转代码服务由CSDN问答提供 功能建议

我无法创建zip文件。 它给了我这个错误。 A 搜索没有结果。 这是我的功能。

  function CompressFile($ fromExtractedFile)
 {
 $ archive = new ZipArchive; 
 
 if if($ archive-> open($  fromExtractedFile。“。zip”,ZipArchive :: OVERWRITE | ZipArchive :: CREATE)=== TRUE){
 $ archive-> addFile($ fromExtractedFile,'payload.csv'); 
 $ archive-> close  (); 
} 
 else {
 throw new Exception(“压缩操作到ZIP文件失败。$ fromExtractedFile  - > $ fromExtractedFile.zip”); 
} 
返回$ fromExtractedFile。“。zip”;  
} 
   
 
 

控制台:

 压缩/ tmp / bing_PeUYiT 
PHP警告'yii \ base \ ErrorException  'with message'ZipArchive :: close():重命名临时文件失败:没有这样的文件或目录'
   
 
 

文档: http://php.net/manual/en/book.zip.php < p> PHP 5.6,Win 8.1,Cygwin 2.5.2

PsySh中的内容相同:

 &gt;&gt;&gt;  $ archive = new ZipArchive 
 =&gt;  ZipArchive {#199 
 +“status”:0,
 +“statusSys”:0,
 +“numFiles”:0,
 +“filename”:“”,
 +“comment”:“”  ,
} 
&gt;&gt;&gt;  $ archive-&gt; open('/ tmp / bing_PeUYiT.zip',ZipArchive :: OVERWRITE | ZipArchive :: CREATE)
 =&gt; 真
&GT;&GT;&GT;  $ archive-&gt; addFile('/ tmp / bing_PeUYiT','payload.csv')
 =&gt; 真
&GT;&GT;&GT;  $ archive-&gt; close()
 
PHP警告:ZipArchive :: close():重命名临时文件失败:第1行没有这样的文件或目录
   
 
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • dpxo13079 2016-08-12 03:58
    最佳回答

    Since ZipArchive is broken, I used PclZip instead.

    $ composer require pclzip/pclzip

      function compressFile2($file) {
        $zip = new PclZip($file.'.zip');
        $error = $zip->create([[PCLZIP_ATT_FILE_NAME => $file, PCLZIP_ATT_FILE_NEW_FULL_NAME => 'payload.csv']]); # array of array
        #$error = $zip->create($file, PCLZIP_OPT_REMOVE_ALL_PATH);
        if ($error == 0) trigger_error("Error : ".$zip->errorInfo(true));
        return $file.'.zip';
      }
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题