mirror of
https://github.com/php/php-src.git
synced 2024-10-01 06:46:08 +00:00
8343d7c139
- If readonly=0, why not $phardata->convertToPhar()? - Known issue with directories creating 'as-file' copies within the archive (all formats) @Greg/Marcus/Tony: This passes all tests on my box, 5.2/5.3/release_ts/debug_ts, and I can't find any more memleaks. Obviously this is too good to be true, so if conversion is still messy elsewhere please feel free to fix, or bug and assign to me.
75 lines
1.4 KiB
PHP
75 lines
1.4 KiB
PHP
--TEST--
|
|
Phar: tar-based phar, valid 1
|
|
--SKIPIF--
|
|
<?php if (!extension_loaded('phar')) die('skip'); ?>
|
|
<?php if (!extension_loaded("spl")) die("skip SPL not available"); ?>
|
|
--INI--
|
|
phar.readonly=0
|
|
--FILE--
|
|
<?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";
|
|
}
|
|
closedir($tar);
|
|
|
|
?>
|
|
===DONE===
|
|
--CLEAN--
|
|
<?php
|
|
@unlink(dirname(__FILE__) . '/tar_003.phar.tar');
|
|
?>
|
|
--EXPECT--
|
|
hi there!
|
|
dir
|
|
.phar
|
|
dir
|
|
dir
|
|
dir
|
|
internal
|
|
file
|
|
tar_003.phpt
|
|
second round
|
|
dir
|
|
.phar
|
|
dir
|
|
dir
|
|
dir
|
|
internal
|
|
file
|
|
tar_003.phpt
|
|
===DONE===
|