opendir_variation5.phpt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. require __DIR__ . '/../skipif_root.inc';
  9. ?>
  10. --FILE--
  11. <?php
  12. /*
  13. * remove the execute permission from the parent dir and test opendir() on child dir
  14. * 1) remove write & execute permission from the 1st parent and test opendir()
  15. * 2) remove execute permission from 2nd parent and test opendir()
  16. */
  17. echo "*** Testing opendir() : usage variations ***\n";
  18. /* create the temporary directory :
  19. * opendir_variation5 ( parent )
  20. * |-> sub_dir ( sub parent )
  21. * |-> child_dir ( child dir)
  22. */
  23. $parent_dir_path = __DIR__ . "/opendir_variation5";
  24. mkdir($parent_dir_path);
  25. chmod($parent_dir_path, 0777);
  26. // create sub_dir
  27. $sub_dir_path = $parent_dir_path . "/sub_dir";
  28. mkdir($sub_dir_path);
  29. chmod($sub_dir_path, 0777);
  30. //create sub_sub_dir
  31. $child_dir_path = $sub_dir_path."/child_dir";
  32. mkdir($child_dir_path);
  33. // remove the write and execute permission from sub parent
  34. chmod($sub_dir_path, 0444);
  35. echo "\n-- After restricting 1st level parent directory --\n";
  36. $dir_handle1 = opendir($child_dir_path);
  37. var_dump( $dir_handle1 );
  38. // remove the execute permission from parent dir, allowing all permission for sub dir
  39. chmod($sub_dir_path, 0777); // all permission to sub dir
  40. chmod($parent_dir_path, 0666); // restricting parent directory
  41. echo "\n-- After restricting parent directory --\n";
  42. $dir_handle2 = opendir($child_dir_path); // try to open, expected failure
  43. var_dump( $dir_handle2 ); // dump it
  44. if (is_resource($dir_handle1)) {
  45. closedir($dir_handle1);
  46. }
  47. if (is_resource($dir_handle2)) {
  48. closedir($dir_handle2);
  49. }
  50. ?>
  51. --CLEAN--
  52. <?php
  53. $parent_dir_path = __DIR__ . "/opendir_variation5";
  54. $sub_dir_path = $parent_dir_path."/sub_dir";
  55. $child_dir_path = $sub_dir_path."/child_dir";
  56. // changing permissions for each temporary directory to delete them
  57. chmod($parent_dir_path, 0777);
  58. chmod($sub_dir_path, 0777);
  59. chmod($child_dir_path, 0777);
  60. rmdir($child_dir_path);
  61. rmdir($sub_dir_path);
  62. rmdir($parent_dir_path);
  63. ?>
  64. --EXPECTF--
  65. *** Testing opendir() : usage variations ***
  66. -- After restricting 1st level parent directory --
  67. Warning: opendir(%s/opendir_variation5/sub_dir/child_dir): Failed to open directory: %s in %s on line %d
  68. bool(false)
  69. -- After restricting parent directory --
  70. Warning: opendir(%s/opendir_variation5/sub_dir/child_dir): Failed to open directory: %s in %s on line %d
  71. bool(false)