PHP Phar存档创建失败

PHP Phar存档创建失败,php,phar,Php,Phar,我正在尝试使用PHP Phar创建一个tar归档。我在一个目录中有大约8500个文件,并使用以下代码: try { $tmp_archive = tempnam(sys_get_temp_dir(), 'arc') . ".tar"; $a = new PharData($tmp_archive); $a->buildFromDirectory('/tmp/data'); $a->compress(Phar::GZ); unset ($a);

我正在尝试使用PHP Phar创建一个tar归档。我在一个目录中有大约8500个文件,并使用以下代码:

try {
    $tmp_archive = tempnam(sys_get_temp_dir(), 'arc') . ".tar";
    $a = new PharData($tmp_archive);

    $a->buildFromDirectory('/tmp/data');
    $a->compress(Phar::GZ);
    unset ($a);

    unlink($tmp_archive);
    rename ($tmp_archive . ".gz", '/tmp/result.tar.gz');
} catch (Exception $e) {
    echo "Tar exception : " . $e;
}
在此过程中失败,并显示以下消息:

Tar异常:无法创建带有消息“Tar-based-phar”/tmp/arcroyoc.Tar”的异常“PharException”,无法写入文件“3147.pdf”的内容,在/tmp/test.php:9中查找失败


有人知道怎么避开这件事吗?我可以用命令行来代替tar吗?

在第9行中,您似乎正在断开刚刚创建的存档的链接。你为什么要这样做?@HoboSapiens不,我正在取消与tar的链接,而不是与.tar.gz的链接-这是因为压缩创建了.tar.gz,但没有删除.tar。请注意:函数tempnam()创建了一个名为“tmpdir/arcxxx”的文件,并将名称作为字符串返回,然后才将“.tar”添加到此字符串。你得到了一个空的临时文件,你从来没有使用过,也从来没有删除过。你有没有在一个只有2-3个文件的非常小的目录中尝试过它?可能存在规模/大小问题?@Zimmi是的,这适用于大约100个文件