--TEST-- Phar: test that refcounting avoids problems with deleting a file zip-based --SKIPIF-- ")) die("skip requires 5.2 or earlier"); ?> --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, "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 (0) { } string(5) "extra" ===UNLINK=== Warning: unlink(): phar error: "b/c.php" in phar "%sefcount1_5_2.phar.zip", has open file pointers, cannot unlink in %sefcount1_5_2.php on line %d object(PharFileInfo)#%d (0) { } string(5) "extra" extra ===DONE===