我有一个后台脚本生成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 . '*'));
到目前为止我检查并确定了什么
可能导致异常的原因和/或是否有办法从PharData::buildFromDirectory
获取更详细的消息?
环境:虚拟XP(在VirtualBox中)在Win7主机的共享文件夹中运行便携式XAMPP(1.8.2,PHP 5.4.25)
答案 0 :(得分:1)
我今天经过数小时的狩猎后解决了类似的问题。这是由磁盘的一个分区上的空间太小引起的。我在创建tar.gz
存档的分区中有足够的空间,但是从另一个分区中删除一些日志文件后,一切都会再次运行。
我认为对象PharData
可能会在某处存储一些临时数据,这就是为什么即使在您创建tar.gz
存档的磁盘上有足够的空间,也会发生这种情况。