<?php include dirname(__FILE__) . '/files/tarmaker.php.inc'; $fname = dirname(__FILE__) . '/tar_003.phar.tar'; $alias = 'phar://' . $fname; $tar = new tarmaker($fname, 'none'); $tar->init(); $tar->addFile('.phar/stub.php', "<?php // tar-based phar archive stub file\n__HALT_COMPILER();"); $tar->addFile('tar_003.phpt', $g = fopen(__FILE__, 'r')); $tar->addFile('internal/file/here', "hi there!\n"); $tar->mkDir('internal/dir'); $tar->mkDir('dir'); $tar->close(); fclose($g); echo file_get_contents($alias . '/internal/file/here'); try { $tar = opendir($alias . '/'); } catch (Exception $e) { echo $e->getMessage() . "\n"; } while (false !== ($v = readdir($tar))) { echo is_file($alias . '/' . $v) ? "file\n" : "dir\n"; echo $v . "\n"; } closedir($tar); /* ensure none of the dir tar files were freed */ echo "second round\n"; $tar = opendir($alias . '/'); while (false !== ($v = readdir($tar))) { echo is_file($alias . '/' . $v) ? "file\n" : "dir\n"; echo $v . "\n";
<?php 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->close(); try { $phar = new Phar($fname); var_dump($phar->getStub()); } catch (Exception $e) { echo $e->getMessage() . "\n"; } copy($fname, $fname2); try { $phar = new PharData($fname2); var_dump($phar->getStub()); } catch (Exception $e) { echo $e->getMessage() . "\n"; } ?> ===DONE=== <?php error_reporting(0); @unlink(dirname(__FILE__) . '/tar_004.phar.tar'); @unlink(dirname(__FILE__) . '/tar_004.tar');
<?php include dirname(__FILE__) . '/files/tarmaker.php.inc'; $fname = dirname(__FILE__) . '/tar_004U.phar.tar'; $alias = 'phar://' . $fname; $tar = new tarmaker($fname, 'none'); $tar->init(); $tar->addFile('tar_004U.php', '<?php var_dump(__FILE__);'); $tar->addFile('internal/file/here', "hi there!\n"); $tar->mkDir('internal/dir'); $tar->mkDir('dir'); $tar->addFile('.phar/stub.php', '<?php Phar::mapPhar(); var_dump("it worked"); include "phar://" . __FILE__ . "/tar_004U.php"; '); $tar->close(); include $fname; ?> ===DONE=== <?php @unlink(dirname(__FILE__) . '/tar_004U.phar.tar');
<?php ini_set('phar.require_hash', 1); 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 include dirname(__FILE__) . '/files/tarmaker.php.inc'; $fname = dirname(__FILE__) . '/tar_bz2.phar'; $alias = 'phar://' . $fname; $fname2 = dirname(__FILE__) . '/tar_bz2.phar.tar'; $alias2 = 'phar://' . $fname2; $tar = new tarmaker($fname, 'bz2'); $tar->init(); $tar->addFile('tar_004.php', '<?php var_dump(__FILE__);'); $tar->addFile('internal/file/here', "hi there!\n"); $tar->mkDir('internal/dir'); $tar->mkDir('dir'); $tar->addFile('.phar/stub.php', '<?php var_dump(__FILE__); var_dump(substr(__FILE__, 0, 4) != "phar"); Phar::mapPhar(); var_dump("it worked"); include "phar://" . __FILE__ . "/tar_004.php"; __HALT_COMPILER(); '); $tar->close(); include $alias; $phar = new Phar($fname); $phar['test'] = 'hi'; copy($fname, $fname2); $phar2 = new Phar($fname2); var_dump($phar2->isFileFormat(Phar::TAR)); var_dump($phar2->isCompressed() == Phar::BZ2); ?> ===DONE===
<?php include dirname(__FILE__) . '/files/tarmaker.php.inc'; $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.tar'; $alias = 'phar://' . $fname; $tar = new tarmaker($fname, 'none'); $tar->init(); $tar->addFile('.phar/stub.php', "<?php\nPhar::mapPhar('hio');\n__HALT_COMPILER(); ?>"); $files = array(); $files['a/x'] = 'a'; foreach ($files as $n => $file) { $tar->addFile($n, $file); } $tar->mkdir('a'); $tar->close(); include $fname; echo file_get_contents($alias . '/a/x') . "\n"; var_dump(rmdir($alias . '/a')); echo file_get_contents($alias . '/a/x') . "\n"; unlink($alias . '/a/x'); var_dump(rmdir($alias . '/a'));
<?php include dirname(__FILE__) . '/files/tarmaker.php.inc'; $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.tar'; $alias = 'phar://' . $fname; $tar = new tarmaker($fname, 'none'); $tar->init(); $tar->addFile('.phar/stub.php', "<?php __HALT_COMPILER(); ?>"); $files = array(); $files['a.php'] = '<?php echo "This is a\\n"; ?>'; $files['b.php'] = '<?php echo "This is b\\n"; ?>'; $files['b/c.php'] = '<?php echo "This is b/c\\n"; ?>'; $files['.phar/alias.txt'] = 'hio'; foreach ($files as $n => $file) { $tar->addFile($n, $file); } $tar->close(); $fp = fopen($alias . '/b/c.php', 'wb'); fwrite($fp, "extra"); fclose($fp); echo "===CLOSE===\n"; $phar = new Phar($fname); $b = fopen($alias . '/b/c.php', 'rb'); $a = $phar['b/c.php']; var_dump($a); var_dump(fread($b, 20)); rewind($b); echo "===UNLINK===\n"; unlink($alias . '/b/c.php'); var_dump($a); var_dump(fread($b, 20));