1--TEST-- 2Phar: test edge cases of opendir() function interception 3--SKIPIF-- 4<?php if (!extension_loaded("phar")) die("skip");?> 5--INI-- 6phar.readonly=0 7--FILE-- 8<?php 9 10Phar::interceptFileFuncs(); 11 12$fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.php'; 13$pname = 'phar://' . $fname; 14 15opendir(array()); 16 17mkdir(__DIR__ . '/opendir_edgecases'); 18chdir(__DIR__); 19 20$a = opendir('opendir_edgecases'); 21 22$arr = array(); 23while (false !== ($b = readdir($a))) { 24 $arr[] = $b; 25} 26sort($arr); 27foreach ($arr as $b) { 28 echo "$b\n"; 29} 30 31closedir($a); 32 33file_put_contents($pname . '/foo', '<?php 34$context = stream_context_create(); 35$a = opendir(".", $context); 36$res = array(); 37while (false !== ($b = readdir($a))) { 38$res[] = $b; 39} 40sort($res); 41foreach ($res as $b) { 42echo "$b\n"; 43} 44opendir("oops"); 45?>'); 46 47include $pname . '/foo'; 48 49?> 50===DONE=== 51--CLEAN-- 52<?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?> 53<?php rmdir(__DIR__ . '/opendir_edgecases'); 54--EXPECTF-- 55Warning: opendir() expects parameter 1 to be a valid path, array given in %sopendir_edgecases.php on line %d 56. 57.. 58foo 59 60Warning: opendir(phar://%sopendir_edgecases.phar.php/oops): failed to open dir: %s in phar://%sopendir_edgecases.phar.php/foo on line %d 61===DONE=== 62