unlink_variation1.phpt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. // Skip if being run by root (files are always readable, writeable and executable)
  9. $filename = dirname(__FILE__)."/unlink_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');
  15. }
  16. unlink($filename);
  17. ?>
  18. --FILE--
  19. <?php
  20. /* Prototype : bool unlink ( string $filename [, resource $context] );
  21. Description : Deletes filename
  22. */
  23. /* Delete file having default permission but its dir having readonly permission
  24. Delete file having readonly permission but dir having default permission
  25. */
  26. $file_path = dirname(__FILE__);
  27. // temp dir name used here
  28. $dirname = "$file_path/unlink_variation1";
  29. // temp filename used here
  30. $filename = "$dirname/unlink_variation1.tmp";
  31. echo "\n*** Testing unlink() on file inside a directory ***\n";
  32. // create temp dir
  33. mkdir($dirname);
  34. // create temp file inside $dirname
  35. $fp = fopen($filename, "w");
  36. fclose($fp);
  37. echo "-- Unlink file having default permission and its dir having read only permission --\n";
  38. // remove write permission of $dirname
  39. var_dump( chmod($dirname, 0444) );
  40. // now try deleting $filename
  41. var_dump( unlink($filename) ); // expected false
  42. var_dump( file_exists($filename) ); // confirm file is deleted
  43. // remove the dir
  44. var_dump( chmod($dirname, 0777) );
  45. var_dump( unlink($filename) ); // expected true
  46. var_dump( rmdir($dirname) );
  47. echo "\n-- Unlinking file without write permission, its dir having default permission --\n";
  48. // create the temp dir
  49. var_dump( mkdir($dirname) );
  50. // create the temp file
  51. $fp = fopen($filename, "w");
  52. fclose($fp);
  53. // remove write permission from file
  54. var_dump( chmod($filename, 0444) );
  55. // now try deleting temp file inside $dirname
  56. var_dump( unlink($filename) ); // expected: true
  57. var_dump( file_exists($filename) ); // expected: false
  58. // remove temp dir
  59. var_dump( rmdir($dirname) );
  60. echo "Done\n";
  61. ?>
  62. --EXPECTF--
  63. *** Testing unlink() on file inside a directory ***
  64. -- Unlink file having default permission and its dir having read only permission --
  65. bool(true)
  66. Warning: unlink(%s): %s in %s on line %d
  67. bool(false)
  68. bool(false)
  69. bool(true)
  70. bool(true)
  71. bool(true)
  72. -- Unlinking file without write permission, its dir having default permission --
  73. bool(true)
  74. bool(true)
  75. bool(true)
  76. bool(false)
  77. bool(true)
  78. Done