php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /opt/php-7.0.1/ext/phar/tests/ |
files >> //opt/php-7.0.1/ext/phar/tests/refcount1.phpt |
--TEST-- Phar: test that refcounting avoids problems with deleting a file --SKIPIF-- <?php if (!extension_loaded("phar")) die("skip"); ?> <?php if (!extension_loaded("spl")) die("skip SPL not available"); ?> <?php if (version_compare(PHP_VERSION, "5.3", "<")) die("skip requires 5.3 or later"); ?> --INI-- phar.readonly=0 phar.require_hash=0 --FILE-- <?php $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php'; $pname = 'phar://' . $fname; $file = b"<?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"; ?>'; include 'files/phar_test.inc'; $fp = fopen($pname . '/b/c.php', 'wb'); fwrite($fp, b"extra"); fclose($fp); echo "===CLOSE===\n"; $p = new Phar($fname); $b = fopen($pname . '/b/c.php', 'rb'); $a = $p['b/c.php']; var_dump($a); var_dump(fread($b, 20)); rewind($b); echo "===UNLINK===\n"; unlink($pname . '/b/c.php'); var_dump($a); var_dump(fread($b, 20)); include $pname . '/b/c.php'; ?> ===DONE=== --CLEAN-- <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?> --EXPECTF-- ===CLOSE=== object(PharFileInfo)#%d (2) { [%spathName":%sSplFileInfo":private]=> string(%d) "phar://%srefcount1.phar.php/b/c.php" [%sfileName":%sSplFileInfo":private]=> string(%d) "c.php" } string(5) "extra" ===UNLINK=== Warning: unlink(): phar error: "b/c.php" in phar "%srefcount1.phar.php", has open file pointers, cannot unlink in %srefcount1.php on line %d object(PharFileInfo)#%d (2) { [%spathName":%sSplFileInfo":private]=> string(%d) "phar://%srefcount1.phar.php/b/c.php" [%sfileName":%sSplFileInfo":private]=> string(%s) "c.php" } string(5) "extra" extra ===DONE===y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`