5
  • 我在窗户上

  • 我正在使用 PHING 压缩一些文件

  • 我有很多东西要拉上拉链

  • 压缩工作,除了那些在被压缩的文件中包含特定 phing 文件集的文件

  • 当我调试时,我可以在 phing 的 ZIP 任务中看到 ZipArchive::close 返回 false。错误字符串显示为“权限被拒绝”。在手册中,它指出 close() 是实际写入文件的内容。

  • 这不是时间耦合,换句话说,无论这个是第一个、最后一个还是其他什么,它都会发生。所有其他的工作。这个好像没有什么不同。

这是我的构建文件:http ://pastebin.org/84786 (一个月有效)

问题出在第 251 行。它之前和之后的 zip 任务都可以正常工作。在调试器中,我可以看到大约 150 个文件被添加到 zip 中。我已经在调试器中验证了所有路径都是正确的。

该构建似乎在 linux 上运行良好。

当我右键单击 zip 文件所在的文件夹时,只读复选框“蓝出”,未选中或未选中。无论我是选中还是取消选中它,然后按确定并返回文件夹的属性,复选框再次为“蓝色”。显然这是设计使然(http://support.microsoft.com/kb/326549),这似乎不是问题,因为它只发生在那个文件中。

另一个奇怪的事情是,如果我转到第 252 行并将文件集更改为指向,例如,它正上方的“importer”模块中的文件,它会创建 zip。但是,第 236 行的 .tar.gz 证明每次都可以正常工作。所以它只发生在为 zip 任务设置的特定文件中。该文件集适用于 tar 任务。事实上,它下面的“包”注释下的所有任务也引用了这些文件,但不会创建 tar.gz 文件。

是什么赋予了?

另外:新的观察......如果我足够快地刷新文件视图,我可以看到 myzipfile.zip.tmp 正在构建,但 myzipfile.zip 永远不会被创建。

在 linux 上,我只是仔细检查了一切是否正常工作。去搞清楚。

4

3 回答 3

1

在您的新观察之后,听起来问题与将 TMP 文件重命名为真正的 ZIP 文件有关。要么存在文件名问题,要么存在某种延迟写入问题,在重命名时文件尚未完全完成。

于 2010-02-01T07:38:35.053 回答
0

我还没有看到有问题的代码,但我遇到了类似的问题。这是由于代码使用正斜杠而不是反斜杠而发生的。我改变了斜线,不得不转义它们(\\)。不知道这是否有帮助,但有时是小事导致了最大的问题。

于 2010-04-05T16:36:09.497 回答
0

根据您所说的在 Linux/Unix 上工作的内容,我猜您受到文件系统/锁定语义差异的影响。在 Unix 中,文件只是自愿锁定的(其他程序在没有“锁定意识”时仍然可以读取它们)。在 Windows 中,锁定是由操作系统强制执行的,这意味着如果它们正在被另一个程序使用,则您无法读取所有文件,当然也不能删除它们(您必须收到该文件的错误消息)。如果我不得不猜测,您正在尝试压缩一个被活动进程锁定的文件并且它失败了。(当您的其他 zip 操作正常工作时,我假设写入不是问题,并且您有足够的磁盘空间/配额(并且不会在 FAT 文件系统上写入大于 2GB 的文件))

于 2010-04-08T10:16:08.033 回答