unlink_variation1.phpt 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 Linux');
  7. }
  8. require __DIR__ . '/../skipif_root.inc';
  9. ?>
  10. --FILE--
  11. <?php
  12. /* Delete file having default permission but its dir having readonly permission
  13. Delete file having readonly permission but dir having default permission
  14. */
  15. $file_path = __DIR__;
  16. // temp dir name used here
  17. $dirname = "$file_path/unlink_variation1";
  18. // temp filename used here
  19. $filename = "$dirname/unlink_variation1.tmp";
  20. echo "\n*** Testing unlink() on file inside a directory ***\n";
  21. // create temp dir
  22. mkdir($dirname);
  23. // create temp file inside $dirname
  24. $fp = fopen($filename, "w");
  25. fclose($fp);
  26. echo "-- Unlink file having default permission and its dir having read only permission --\n";
  27. // remove write permission of $dirname
  28. var_dump( chmod($dirname, 0444) );
  29. // now try deleting $filename
  30. var_dump( unlink($filename) ); // expected false
  31. var_dump( file_exists($filename) ); // confirm file is deleted
  32. // remove the dir
  33. var_dump( chmod($dirname, 0777) );
  34. var_dump( unlink($filename) ); // expected true
  35. var_dump( rmdir($dirname) );
  36. echo "\n-- Unlinking file without write permission, its dir having default permission --\n";
  37. // create the temp dir
  38. var_dump( mkdir($dirname) );
  39. // create the temp file
  40. $fp = fopen($filename, "w");
  41. fclose($fp);
  42. // remove write permission from file
  43. var_dump( chmod($filename, 0444) );
  44. // now try deleting temp file inside $dirname
  45. var_dump( unlink($filename) ); // expected: true
  46. var_dump( file_exists($filename) ); // expected: false
  47. // remove temp dir
  48. var_dump( rmdir($dirname) );
  49. echo "Done\n";
  50. ?>
  51. --EXPECTF--
  52. *** Testing unlink() on file inside a directory ***
  53. -- Unlink file having default permission and its dir having read only permission --
  54. bool(true)
  55. Warning: unlink(%s): %s in %s on line %d
  56. bool(false)
  57. bool(false)
  58. bool(true)
  59. bool(true)
  60. bool(true)
  61. -- Unlinking file without write permission, its dir having default permission --
  62. bool(true)
  63. bool(true)
  64. bool(true)
  65. bool(false)
  66. bool(true)
  67. Done