unlink_variation1-win32-mb.phpt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. --TEST--
  2. Test unlink() function : usage variations - unlinking file in a directory
  3. --SKIPIF--
  4. <?php
  5. if (substr(PHP_OS, 0, 3) != 'WIN') {
  6. die('skip only on Windows');
  7. }
  8. ?>
  9. --FILE--
  10. <?php
  11. /* Prototype : bool unlink ( string $filename [, resource $context] );
  12. Description : Deletes filename
  13. */
  14. /* Delete file having default permission but its dir having readonly permission
  15. Delete file having readonly permission but dir having default permission
  16. */
  17. $file_path = dirname(__FILE__).DIRECTORY_SEPARATOR."私はガラスを食べられます";
  18. @mkdir($file_path);
  19. // temp dir name used here
  20. $dirname = "$file_path/unlink_variation1";
  21. // temp filename used here
  22. $filename = "$dirname/unlink_variation1-win32.tmp";
  23. echo "\n*** Testing unlink() on file inside a directory ***\n";
  24. // create temp dir
  25. mkdir($dirname);
  26. // create temp file inside $dirname
  27. $fp = fopen($filename, "w");
  28. fclose($fp);
  29. echo "-- Unlink file having default permission and its dir having read only permission --\n";
  30. // remove write permission of $dirname
  31. // on windows dir permission is not respected
  32. var_dump( chmod($dirname, 0444) );
  33. // now try deleting $filename
  34. var_dump( unlink($filename) ); // expected: true
  35. var_dump( file_exists($filename) ); // confirm file is deleted
  36. // remove the dir
  37. var_dump( chmod($dirname, 0777) );
  38. rmdir($dirname);
  39. echo "\n-- Unlinking file without write permission, its dir having default permission --\n";
  40. // create the temp dir
  41. mkdir($dirname);
  42. // create the temp file
  43. $fp = fopen($filename, "w");
  44. fclose($fp);
  45. // remove write permission from file
  46. var_dump( chmod($filename, 0444) );
  47. // now try deleting temp file inside $dirname
  48. var_dump( unlink($filename) ); // expected: false
  49. // reassign write permission to temp file
  50. chmod($filename, 0777);
  51. // delete temp file
  52. var_dump( unlink($filename) );
  53. var_dump( file_exists($filename) ); // confirm file is deleted
  54. // remove temp dir
  55. rmdir($dirname);
  56. rmdir($file_path);
  57. echo "Done\n";
  58. ?>
  59. --EXPECTF--
  60. *** Testing unlink() on file inside a directory ***
  61. -- Unlink file having default permission and its dir having read only permission --
  62. bool(true)
  63. bool(true)
  64. bool(false)
  65. bool(true)
  66. -- Unlinking file without write permission, its dir having default permission --
  67. bool(true)
  68. Warning: unlink(%s/unlink_variation1/unlink_variation1-win32.tmp): Permission denied in %s on line %d
  69. bool(false)
  70. bool(true)
  71. bool(false)
  72. Done