PHP来提取;some dir/file.ext“;从焦油到;另一个目录/file.ext“;
我使用由第三方每月创建的.tar.gz。我可以解压缩到.tar;但是当我从tar中提取文件时,我无法覆盖tar目录名 tar有一个文件夹“dirname\u latestDate”,其中包含许多文件。我希望通过指定要提取的单个文件,可以忽略tar的“文件夹”(测试脚本是从stackoverflow和其他地方的代码拼凑而成) 但这仍然会导致文件被放置在名为per tar folder的子目录中,例如/mypath/my dir/tar dirname/file.ext 我可以从子目录复制文件,然后删除,但这似乎是无效和不必要的。有没有办法覆盖un Tar上的Tar文件夹名称?PHP来提取;some dir/file.ext“;从焦油到;另一个目录/file.ext“;,php,tar,phar,Php,Tar,Phar,我使用由第三方每月创建的.tar.gz。我可以解压缩到.tar;但是当我从tar中提取文件时,我无法覆盖tar目录名 tar有一个文件夹“dirname\u latestDate”,其中包含许多文件。我希望通过指定要提取的单个文件,可以忽略tar的“文件夹”(测试脚本是从stackoverflow和其他地方的代码拼凑而成) 但这仍然会导致文件被放置在名为per tar folder的子目录中,例如/mypath/my dir/tar dirname/file.ext 我可以从子目录复制文件,然后
tar包含一个大约4MB的文件(未压缩)和一些其他小型文件。否,您不能直接使用
extractTo
更改输出文件名
但是,您可以将
文件\u put\u contents
与$phar['filepath]->getContent()
结合使用来手动提取文件。否,您不能直接使用extractTo
更改输出文件名
但是,您可以使用file\u put\u contents
和$phar['filepath]->getContent()
手动提取文件
$archive = new PharData($theTar);
// error cheecking excluded
foreach($archive as $entry) {
$extractDir = basename($file) . '/';
if($file->isDir()) {
$dir = new PharData($file->getPathname());
foreach($dir as $child) {
$extract_file = $extractDir . basename($child);
$archive->extractTo('/mypath/my-dir', $extract_file, true);
}
}
}