--TEST-- Phar: test that refcounting avoids problems with deleting a file zip-based --SKIPIF-- --INI-- phar.readonly=0 phar.require_hash=0 --FILE-- setStub(""); $phar->setAlias('hio'); $files = array(); $files['a.php'] = ''; $files['b.php'] = ''; $files['b/c.php'] = ''; foreach ($files as $n => $file) { $phar[$n] = $file; } $phar->stopBuffering(); $fp = fopen($alias . '/b/c.php', 'wb'); fwrite($fp, b"extra"); fclose($fp); echo "===CLOSE===\n"; $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)); include $alias . '/b/c.php'; ?> ===DONE=== --CLEAN-- --EXPECTF-- ===CLOSE=== object(PharFileInfo)#%d (2) { [%spathName":%sSplFileInfo":private]=> string(%d) "phar://%srefcount1.phar.zip/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.zip", has open file pointers, cannot unlink in %srefcount1.php on line %d object(PharFileInfo)#%d (2) { [%spathName":%sSplFileInfo":private]=> string(%d) "phar://%srefcount1.phar.zip/b/c.php" [%sfileName":%sSplFileInfo":private]=> string(%s) "c.php" } string(5) "extra" extra ===DONE===