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