Annotation of embedaddon/php/ext/standard/tests/dir/opendir_variation5.phpt, revision 1.1
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===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>