使用PHP提取.deb归档文件的一部分

时间:2019-03-16 13:43:06

标签: php pear

我想使用PHP将control.tar.gz文件的.deb提取到目录中。 File_Archive::extract应该是可能的。

这是我当前拥有的代码:

$tmp = 'testdebs';

foreach (glob("../debs/*.deb") as $t1) {

    //$t1 correct
    echo "current deb: " . $t1 . "\n";

    $fname = ($t1);

    $md5 = md5_file($t1);

    $sha1 = sha1_file($t1);
    $sha256 = hash_file('sha256', $t1);
    $sha512 = hash_file('sha512', $t1);

    $size = filesize($t1);

    echo "size: " . $size . "\n";


    //Also tried: 
    // File_Archive::extract(File_Archive::read($t1 . '/control.tar.gz/'), File_Archive::toFiles("/var/www/some_directory/manage/testdebs/"));
    // and:
    // File_Archive::extract(File_Archive::read($t1 . '/control.tar.gz/'), File_Archive::toFiles($tmp));

    File_Archive::extract(File_Archive::read($t1 . '/control.tar.gz/'), File_Archive::toFiles("/var/www/some_directory/manage/testdebs"));


    $aLinesFile = file("testdebs/control", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

    echo "aLinesFile: " . $aLinesFile . "\n";

    $pack = end(preg_grep('/^Package\:.*$/i', $aLinesFile));

    echo $pack . "\n";

}

运行此代码实际上不执行任何操作。 $t1始终具有.deb的正确值(这意味着在目录中找到.deb)。我还为filesize文件获得了正确的.deb

我的testdeb直接为空,所以我猜File_Archive::extract肯定有错误。在错误日志中,我仅找到以下警告:

  

PHP警告:end()期望参数1为数组,在第78行的/var/www/some_directory/manage/generate.php中给出的值为null

第78行在代码示例中为$pack = end(preg_grep('/^Package\:.*$/i', $aLinesFile)); testdeb 目录设置为 775 ,并且归用户( www-data )所有,因此我认为权限是正确的。

是否可以找到有关该错误的更多信息或启用一些更深入的日志记录以解决此错误?

0 个答案:

没有答案