예제 #1
0
include dirname(__FILE__) . '/files/tarmaker.php.inc';
$fname = dirname(__FILE__) . '/tar_004.phar.tar';
$alias = 'phar://' . $fname;
$fname2 = dirname(__FILE__) . '/tar_004.tar';
$tar = new tarmaker($fname, 'none');
$tar->init();
$tar->addFile('tar_004.php', '<?php var_dump(__FILE__);');
$tar->addFile('internal/file/here', "hi there!\n");
$tar->addFile('.phar/stub.php', "__HALT_COMPILER();");
$tar->close();
try {
    $phar = new Phar($fname);
    var_dump($phar->getStub());
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}
ini_set('phar.require_hash', 0);
try {
    $phar = new PharData($fname2);
    $phar['file'] = 'hi';
    var_dump($phar->getSignature());
    $phar->setSignatureAlgorithm(Phar::MD5);
    var_dump($phar->getSignature());
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}
?>
===DONE===
<?php 
@unlink(dirname(__FILE__) . '/tar_004.phar.tar');
@unlink(dirname(__FILE__) . '/tar_004.tar');
예제 #2
0
파일: Cloner.php 프로젝트: peopleplan/Pyrus
 function toTar()
 {
     if (isset($this->tar)) {
         return;
     }
     if (isset($this->tgz)) {
         if (file_exists($this->file . '.tar')) {
             try {
                 $p = new \PharData($this->file . '.tar');
             } catch (\Exception $e) {
             }
             if ($p->getSignature() === $this->phar->getSignature()) {
                 $this->tar = $p;
                 if ($this->outfile) {
                     copy($this->file . '.tar', $this->outfile . '.tar');
                 }
                 return;
             }
             unset($p);
             \Phar::unlinkArchive($this->file . '.tar');
         }
         $fp = gzopen($this->file . '.tgz', 'rb');
         $gp = fopen($this->file . '.tar', 'wb');
         stream_copy_to_stream($fp, $gp);
         fclose($fp);
         fclose($gp);
         $this->tar = new \PharData($this->file . '.tar');
         return;
     }
     if (isset($this->zip)) {
         if (file_exists($this->file . '.tar')) {
             \Phar::unlinkArchive($this->file . '.tar');
         }
         $this->tar = $this->zip->convertToData(\Phar::TAR, \Phar::NONE, $this->ext . '.tar');
         $this->tar->setSignatureAlgorithm(\Phar::SHA1);
         if ($this->outfile) {
             copy($this->file . '.tar', $this->outfile . '.tar');
         }
         $this->zip = new \PharData($this->file . '.zip');
         return;
     }
     // by process of elimination, the phar is in phar format
     if (file_exists($this->file . '.tar')) {
         \Phar::unlinkArchive($this->file . '.tar');
     }
     $this->tar = $this->phar->convertToData(\Phar::TAR, \Phar::NONE, $this->ext . '.tar');
     $this->tar->setSignatureAlgorithm(\Phar::SHA1);
     if ($this->outfile) {
         copy($this->file . '.tar', $this->outfile . '.tar');
     }
     $this->phar = new \Phar($this->file . '.phar');
 }