在PHP中从数组创建.tar文件

在PHP中从数组创建.tar文件,php,linux,tar,Php,Linux,Tar,我想从PHP中的一个数组中创建一个.tar文件,该数组具有我要压缩的文件的路径 Array ( [0] => Array ( [img] => 1000e5d5771dd2c08bb368faef3e44944.jpg ) [1] => Array ( [img] => 10011633ba1169e1c7a67b31ad41df0c8.jpg ) [2] => Array ( [img] => 100155e447db12dc3a0d3cc3a4bd5

我想从PHP中的一个数组中创建一个.tar文件,该数组具有我要压缩的文件的路径

Array ( 
[0] => Array ( [img] => 1000e5d5771dd2c08bb368faef3e44944.jpg ) 
[1] => Array ( [img] => 10011633ba1169e1c7a67b31ad41df0c8.jpg ) 
[2] => Array ( [img] => 100155e447db12dc3a0d3cc3a4bd55f10.jpg )
)
我甚至不知道这是否可以做到,我只知道可以用这样的方法做到:

if (is_dir($Path) === true) {
    $archive = new PharData('/var/www/html/media/migration.tar');
    $archive->buildFromDirectory($Path);
}

这个tar是从一个路径创建的,但是我的所有文件都和其他很多文件在一起,所以我不能使用整个路径。有什么想法吗

您必须添加每个文件,并在获得所有文件后进行压缩:

$archive = new PharData('/var/www/html/media/migration.tar');
//setting the path where all your files are: (guessing is the same the script runs)
$path_folder = '.';    
foreach($array_files as $file)
{
    if (is_dir($path_folder.'/'.$file) === true) {
        $archive->addFile($path_folder.'/'.$file);

    }
}

$archive->compressFiles(Phar::GZ);
这就行了

$your_array = [
                [ 'img' => '1000e5d5771dd2c08bb368faef3e44944.jpg' ],
                [ 'img' => '10011633ba1169e1c7a67b31ad41df0c8.jpg' ],
                [ 'img' => '100155e447db12dc3a0d3cc3a4bd55f10.jpg' ]
              ];

$img_path = 'location/to/your/images/directory/';

try
{
    $archive = new PharData('archive.tar');

    foreach($your_array as $img)
    {
        $archive->addFile( $img_path . $img['img'] );
    }
} 
catch (Exception $e) 
{
    echo "Exception : " . $e;
}

请注意,它将在当前目录(此代码段所在的目录)中创建存档,您可以通过将路径更改为
$archive=new PharData('archive.tar')此行。

数组包含完整路径或仅包含名称?仅包含名称,但它们的路径都相同。请尝试运行它并粘贴输出。