dir_variation7.phpt 2.4 KB

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