我想使用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 )所有,因此我认为权限是正确的。
是否可以找到有关该错误的更多信息或启用一些更深入的日志记录以解决此错误?