1--TEST-- 2Phar: opendir test, recurse into 3--SKIPIF-- 4<?php 5if (!extension_loaded("phar")) die("skip"); 6if (version_compare(PHP_VERSION, "6.0", ">")) die("skip pre-unicode version of PHP required"); 7?> 8--INI-- 9phar.require_hash=0 10detect_unicode=0 11--FILE-- 12<?php 13$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php'; 14$pname = 'phar://' . $fname; 15$file = "<?php 16Phar::mapPhar('hio'); 17__HALT_COMPILER(); ?>"; 18 19$files = array(); 20$files['a'] = 'a'; 21$files['b/a'] = 'b'; 22$files['b/c/d'] = 'c'; 23$files['bad/c'] = 'd'; 24include 'files/phar_test.inc'; 25include $fname; 26 27function dump($phar, $base) 28{ 29 var_dump($phar . $base); 30 $dir = opendir($phar . $base); 31 if ($base == '/') 32 { 33 $base = ''; 34 } 35 while (false !== ($entry = readdir($dir))) { 36 $entry = $base . '/' . $entry; 37 var_dump($entry); 38 var_dump(is_dir($phar . $entry)); 39 if (is_dir($phar . $entry)) 40 { 41 dump($phar, $entry); 42 } 43 else 44 { 45 var_dump(file_get_contents($phar . $entry)); 46 } 47 } 48} 49 50dump('phar://hio', '/'); 51 52?> 53--CLEAN-- 54<?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?> 55--EXPECT-- 56string(11) "phar://hio/" 57string(2) "/a" 58bool(false) 59string(1) "a" 60string(2) "/b" 61bool(true) 62string(12) "phar://hio/b" 63string(4) "/b/a" 64bool(false) 65string(1) "b" 66string(4) "/b/c" 67bool(true) 68string(14) "phar://hio/b/c" 69string(6) "/b/c/d" 70bool(false) 71string(1) "c" 72string(4) "/bad" 73bool(true) 74string(14) "phar://hio/bad" 75string(6) "/bad/c" 76bool(false) 77string(1) "d" 78