Return to opendir_variation5.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / dir |
1.1 misho 1: --TEST-- 2: Test opendir() function : usage variations - directories with restricted permissions 3: --SKIPIF-- 4: <?php 5: if( substr(PHP_OS, 0, 3) == 'WIN') { 6: die('skip Not for Windows'); 7: } 8: // Skip if being run by root (files are always readable, writeable and executable) 9: $filename = dirname(__FILE__)."/dir_root_check.tmp"; 10: $fp = fopen($filename, 'w'); 11: fclose($fp); 12: if(fileowner($filename) == 0) { 13: unlink ($filename); 14: die('skip...cannot be run as root\n'); 15: } 16: unlink($filename); 17: ?> 18: --FILE-- 19: <?php 20: /* Prototype : mixed opendir(string $path[, resource $context]) 21: * Description: Open a directory and return a dir_handle 22: * Source code: ext/standard/dir.c 23: */ 24: 25: /* 26: * remove the execute permission from the parent dir and test opendir() on child dir 27: * 1) remove write & execute permission from the 1st parent and test opendir() 28: * 2) remove execute permission from 2nd parent and test opendir() 29: */ 30: 31: echo "*** Testing opendir() : usage variations ***\n"; 32: 33: /* create the temporary directory : 34: * opendir_variation5 ( parent ) 35: * |-> sub_dir ( sub parent ) 36: * |-> child_dir ( child dir) 37: */ 38: 39: $parent_dir_path = dirname(__FILE__) . "/opendir_variation5"; 40: mkdir($parent_dir_path); 41: chmod($parent_dir_path, 0777); 42: 43: // create sub_dir 44: $sub_dir_path = $parent_dir_path . "/sub_dir"; 45: mkdir($sub_dir_path); 46: chmod($sub_dir_path, 0777); 47: 48: //create sub_sub_dir 49: $child_dir_path = $sub_dir_path."/child_dir"; 50: mkdir($child_dir_path); 51: 52: // remove the write and execute permisson from sub parent 53: chmod($sub_dir_path, 0444); 54: 55: echo "\n-- After restricting 1st level parent directory --\n"; 56: $dir_handle1 = opendir($child_dir_path); 57: var_dump( $dir_handle1 ); 58: 59: // remove the execute permisson from parent dir, allowing all permission for sub dir 60: chmod($sub_dir_path, 0777); // all permisson to sub dir 61: chmod($parent_dir_path, 0666); // restricting parent directory 62: 63: echo "\n-- After restricting parent directory --\n"; 64: $dir_handle2 = opendir($child_dir_path); // try to open, expected failure 65: var_dump( $dir_handle2 ); // dump it 66: 67: if (is_resource($dir_handle1)) { 68: closedir($dir_handle1); 69: } 70: if (is_resource($dir_handle2)) { 71: closedir($dir_handle2); 72: } 73: ?> 74: ===DONE=== 75: --CLEAN-- 76: <?php 77: $parent_dir_path = dirname(__FILE__) . "/opendir_variation5"; 78: $sub_dir_path = $parent_dir_path."/sub_dir"; 79: $child_dir_path = $sub_dir_path."/child_dir"; 80: 81: // changing permissions for each temporary directory to delete them 82: chmod($parent_dir_path, 0777); 83: chmod($sub_dir_path, 0777); 84: chmod($child_dir_path, 0777); 85: 86: rmdir($child_dir_path); 87: rmdir($sub_dir_path); 88: rmdir($parent_dir_path); 89: ?> 90: 91: --EXPECTF-- 92: *** Testing opendir() : usage variations *** 93: 94: -- After restricting 1st level parent directory -- 95: 96: Warning: opendir(%s/opendir_variation5/sub_dir/child_dir): failed to open dir: %s in %s on line %d 97: bool(false) 98: 99: -- After restricting parent directory -- 100: 101: Warning: opendir(%s/opendir_variation5/sub_dir/child_dir): failed to open dir: %s in %s on line %d 102: bool(false) 103: ===DONE===