如何在php中提取bz2文件

时间:2015-04-14 09:04:22

标签: php extraction bzip2

我使用phpmyadmin从数据库导出了一个SQL文件。该文件名为final.sql.bz2,然后我将其上传到我的Live Server。

问题是,如何使用PHP代码提取该文件?我试图在谷歌搜索,但没有得到任何结果。我怎么能unzip呢?

2 个答案:

答案 0 :(得分:4)

您应该使用PHP中的bzip函数而不是它们不同的zip函数。

http://php.net/manual/en/book.bzip2.php

或者,如果可能,您可以使用exec执行bunzip2命令从存档中提取文件:

bunzip2 [DATEI].bz2

答案 1 :(得分:0)

我需要在共享主机中解压缩bz2,其中tar无法帮助我解压缩(bzip2和lbzip2出错,并且我无法安装任何东西或执行sudo ...)

我通过创建一个php文件并从命令行运行它来解决它(当然,您也可以修改脚本以在线使用它)。

bunzip2.php

<?php
function decompress($data)
 {
     // Decompress the file
     if (@file_exists($data)) {
         $bz = bzopen($data, 'r');
         $uncompressed = '';
         // Read the uncompressed data.
         while (!feof($bz)) {
             $uncompressed .= bzread($bz, 4096);
         }
         // Close the Bzip2 compressed file and write
         // the data to the uncompressed file.
         bzclose($bz);
         if (stripos($data, '.tbz2') !== false) {
             $newFile = str_replace('.tbz2', '.tar', $data);
         } else {
             if (stripos($data, '.tbz') !== false) {
                 $newFile = str_replace('.tbz', '.tar', $data);
             } else {
                 $newFile = str_replace('.bz2', '', $data);
             }
         }
         file_put_contents($newFile, $uncompressed);
         return $newFile;
         // Else, decompress the string
     } else {
         return bzdecompress($data);
     }
 }

decompress($argv[1]);
?>
  

php bunzip2.php my.tar.bz2

(我只是在github上搜索了bz2 + php,我没有详细检查代码,但是它能完成工作;)