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