Return to dir_variation3.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / dir |
1.1 misho 1: --TEST-- 2: Test dir() function : usage variations - different directory 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: /* 21: * Prototype : object dir(string $directory[, resource $context]) 22: * Description: Directory class with properties, handle and class and methods read, rewind and close 23: * Source code: ext/standard/dir.c 24: */ 25: 26: /* 27: * Providing various permissions to the directory to be opened and checking 28: * to see if dir() function opens the directory successfully. 29: */ 30: 31: echo "*** Testing dir() : different directory permissions ***"; 32: 33: // create the temporary directory 34: $file_path = dirname(__FILE__); 35: $dir_path = $file_path."/dir_variation3"; 36: @mkdir($dir_path); 37: 38: /* different values for directory permissions */ 39: $permission_values = array( 40: /*1*/ 0477, // owner has read only, other and group has rwx 41: 0677, // owner has rw only, other and group has rwx 42: 43: /*3*/ 0444, // all have read only 44: 0666, // all have rw only 45: 46: /*5*/ 0400, // owner has read only, group and others have no permission 47: 0600, // owner has rw only, group and others have no permission 48: 49: /*7*/ 0470, // owner has read only, group has rwx & others have no permission 50: 0407, // owner has read only, other has rwx & group has no permission 51: 52: /*9*/ 0670, // owner has rw only, group has rwx & others have no permission 53: /*10*/ 0607 // owner has rw only, group has no permission and others have rwx 54: ); 55: 56: // Open directory with different permission values, read and close, expected: none of them to succeed. 57: for($count = 0; $count < count($permission_values); $count++) { 58: echo "\n-- Iteration ".($count + 1)." --\n"; 59: 60: // try to remove the dir if exists & create 61: $file_path = dirname(__FILE__); 62: $dir_path = $file_path."/dir_variation3"; 63: @chmod ($dir_path, 0777); // change dir permission to allow all operation 64: @rmdir ($dir_path); // try n delete the dir 65: 66: // create the dir now 67: @mkdir($dir_path); 68: 69: // change the dir permisson to test dir on it 70: var_dump( chmod($dir_path, $permission_values[$count]) ); 71: 72: // try to get dir handle 73: $d = dir($dir_path); 74: var_dump($d); // dump the handle 75: 76: // try read directory, expected : false 77: echo "-- reading contents --\n"; 78: var_dump($d->read()); 79: 80: // close directory 81: $d->close(); 82: } 83: 84: echo "Done"; 85: ?> 86: --CLEAN-- 87: <?php 88: // deleting temporary directory 89: $file_path = dirname(__FILE__); 90: $dir_path = $file_path."/dir_variation3"; 91: rmdir($dir_path); 92: ?> 93: --EXPECTF-- 94: *** Testing dir() : different directory permissions *** 95: -- Iteration 1 -- 96: bool(true) 97: object(Directory)#%d (2) { 98: ["path"]=> 99: string(%d) "%s/dir_variation3" 100: ["handle"]=> 101: resource(%d) of type (stream) 102: } 103: -- reading contents -- 104: string(%d) "%s" 105: 106: -- Iteration 2 -- 107: bool(true) 108: object(Directory)#%d (2) { 109: ["path"]=> 110: string(%d) "%s/dir_variation3" 111: ["handle"]=> 112: resource(%d) of type (stream) 113: } 114: -- reading contents -- 115: string(%d) "%s" 116: 117: -- Iteration 3 -- 118: bool(true) 119: object(Directory)#%d (2) { 120: ["path"]=> 121: string(%d) "%s/dir_variation3" 122: ["handle"]=> 123: resource(%d) of type (stream) 124: } 125: -- reading contents -- 126: string(%d) "%s" 127: 128: -- Iteration 4 -- 129: bool(true) 130: object(Directory)#%d (2) { 131: ["path"]=> 132: string(%d) "%s/dir_variation3" 133: ["handle"]=> 134: resource(%d) of type (stream) 135: } 136: -- reading contents -- 137: string(%d) "%s" 138: 139: -- Iteration 5 -- 140: bool(true) 141: object(Directory)#%d (2) { 142: ["path"]=> 143: string(%d) "%s/dir_variation3" 144: ["handle"]=> 145: resource(%d) of type (stream) 146: } 147: -- reading contents -- 148: string(%d) "%s" 149: 150: -- Iteration 6 -- 151: bool(true) 152: object(Directory)#%d (2) { 153: ["path"]=> 154: string(%d) "%s/dir_variation3" 155: ["handle"]=> 156: resource(%d) of type (stream) 157: } 158: -- reading contents -- 159: string(%d) "%s" 160: 161: -- Iteration 7 -- 162: bool(true) 163: object(Directory)#%d (2) { 164: ["path"]=> 165: string(%d) "%s/dir_variation3" 166: ["handle"]=> 167: resource(%d) of type (stream) 168: } 169: -- reading contents -- 170: string(%d) "%s" 171: 172: -- Iteration 8 -- 173: bool(true) 174: object(Directory)#%d (2) { 175: ["path"]=> 176: string(%d) "%s/dir_variation3" 177: ["handle"]=> 178: resource(%d) of type (stream) 179: } 180: -- reading contents -- 181: string(%d) "%s" 182: 183: -- Iteration 9 -- 184: bool(true) 185: object(Directory)#%d (2) { 186: ["path"]=> 187: string(%d) "%s/dir_variation3" 188: ["handle"]=> 189: resource(%d) of type (stream) 190: } 191: -- reading contents -- 192: string(%d) "%s" 193: 194: -- Iteration 10 -- 195: bool(true) 196: object(Directory)#%d (2) { 197: ["path"]=> 198: string(%d) "%s/dir_variation3" 199: ["handle"]=> 200: resource(%d) of type (stream) 201: } 202: -- reading contents -- 203: string(%d) "%s" 204: Done