代码之家  ›  专栏  ›  技术社区  ›  Kvvaradha

php ZipArchieve错误代码9的解决方案

php
  •  1
  • Kvvaradha  · 技术社区  · 7 年前

    ZipArchive::ER_NOENT : return 'N No such file';

    define('ABSPATH', dirname(__FILE__) . '/' );
    $dest = ABSPATH.'zip_file_name.zip';
    $file = ABSPATH.'test.php';
    $zip = new ZipArchive;
      $res = $zip->open($dest, ZIPARCHIVE::OVERWRITE);
      if ($res === TRUE) {
          echo 'ok';
          $zip->addFile($file, $file);
          $zip->close();
      } else {
          echo 'failed, code:' . $res;
      }
    
    1 回复  |  直到 6 年前
        1
  •  5
  •   Steffen Mächtel    7 年前

    在本地主机(Windows)上测试脚本。我收到错误消息“失败,代码:9”。

    http://php.net/manual/en/ziparchive.open.php

    当我加上 ZipArchive::创建 它工作(输出“ok”):

    define('ABSPATH', dirname(__FILE__) . '/' );
    $dest = ABSPATH.'zip_file_name.zip';
    $file = ABSPATH.'test.php';
    $zip = new ZipArchive;
      $res = $zip->open($dest, ZipArchive::CREATE | ZIPARCHIVE::OVERWRITE);
      if ($res === TRUE) {
          echo 'ok';
          $zip->addFile($file, $file);
          $zip->close();
      } else {
          echo 'failed, code:' . $res;
      }
    

    zip_file_name.zip中的test.php文件具有完整的windows路径。在根级别(Windows环境)的zip文件中有一个目录“C:”。这是正确的吗?

    如果不需要绝对路径,可以使用相对路径:

    define('ABSPATH', dirname(__FILE__) . '/' );
    $dest = ABSPATH.'zip_file_name.zip';
    $relativeFile = 'test.php';
    $absoluteFile = ABSPATH.$relativeFile;
    $zip = new ZipArchive;
      $res = $zip->open($dest, ZipArchive::CREATE | ZIPARCHIVE::OVERWRITE);
      if ($res === TRUE) {
          echo 'ok';
          $zip->addFile($absoluteFile, $relativeFile);
          $zip->close();
      } else {
          echo 'failed, code:' . $res;
      }
    
    推荐文章