【发布时间】:2011-01-11 14:39:56
【问题描述】:
我在窗户上
我正在使用 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 行并将文件集更改为指向,例如,它正上方的“导入器”模块中的文件,它会创建 zip。但是,第 236 行的 .tar.gz 证明每次都可以正常工作。所以它只发生在为 zip 任务设置的特定文件中。该文件集适用于 tar 任务。事实上,在它下面的“包”cmets 下所有引用这些文件的任务都不会被创建,但是 tar.gz 文件会。
什么给了?
另外:新的观察结果......如果我刷新文件视图足够快,我可以看到 myzipfile.zip.tmp 正在构建,但 myzipfile.zip 永远不会被创建。
在 linux 上,我只是仔细检查了一切是否正常工作。去图吧。
【问题讨论】:
-
这听起来确实像是windows文件系统权限问题,尝试为整个/build/递归设置新权限,并专门为所有用户添加权限(仅用于调试)。
-
如前所述,我已经尝试切换只读状态。对于源目录和构建目录,我都去确保所有用户都允许每个权限。在这个问题上没有任何改变。感谢您的输入
-
您是否使用简单的 PHP 脚本进行检查,例如。使用 fwrite(),是否允许 PHP 网络用户在该目录中写入?似乎是这样,因为你可以使用 tar.gz,但这将是一个小测试。
-
我在 $zip->close() 上写了一个断点(phing 中 ZipTask.php 的第 201 行)。 is_writable(dirname($this->zipFile->getAbsolutePath())) 计算结果为真。 (如果你没有按照我正在做的事情,我要求提供 .zip 文件的完整路径的父目录并检查它是否存在并且可写。PHP 说它是。
-
Pastebin 已删除代码...
标签: php file-permissions phing ziparchive