如果PharData :: buildFromDirectory无法将文件内容写入tar,请检查什么?

时间:2014-03-06 15:51:05

标签: php exception tar phar

我有一个后台脚本生成html文件(大小为100-500KB)作为副产品,当它累积了500个文件时,它将它们打包成.tar.gz并存档。它已经持续运行了几个星期,直到今天早上产生了131 .tar.gz文件,当时它抛出了以下异常:

Uncaught exception 'PharException' with message 'tar-based phar
"E:/xampp/.../archive/1394109645.tar" cannot be created, contents of file 
"58836.html" could not be written' in E:/xampp/.../background.php:68

负责存档的代码

$name = $path_archive . $set . '.tar';
$archive = new PharData($name);
$archive->buildFromDirectory($path_input); // <--- line 68
$archive->compress(Phar::GZ);
unset($archive);
unlink($name);            
array_map('unlink', glob($path_input . '*'));

到目前为止我检查并确定了什么

  • 我在html文件中找不到任何不规则的内容,
  • 在此过程中没有其他任何内容触及此文件,
  • 脚本超时和内存无限制
  • 足够的备用内存和磁盘空间

可能导致异常的原因和/或是否有办法从PharData::buildFromDirectory获取更详细的消息?

环境:虚拟XP(在VirtualBox中)在Win7主机的共享文件夹中运行便携式XAMPP(1.8.2,PHP 5.4.25)

1 个答案:

答案 0 :(得分:1)

我今天经过数小时的狩猎后解决了类似的问题。这是由磁盘的一个分区上的空间太小引起的。我在创建tar.gz存档的分区中有足够的空间,但是从另一个分区中删除一些日志文件后,一切都会再次运行。

我认为对象PharData可能会在某处存储一些临时数据,这就是为什么即使在您创建tar.gz存档的磁盘上有足够的空间,也会发生这种情况。