1--TEST--
2Test fileperms() & chmod() functions: usage variation - misc. perms
3--SKIPIF--
4<?php
5if (substr(PHP_OS, 0, 3) == 'WIN') {
6    die('skip Not on Windows');
7}
8// Skip if being run by root
9$filename = dirname(__FILE__)."/006_root_check.tmp";
10$fp = fopen($filename, 'w');
11fclose($fp);
12if(fileowner($filename) == 0) {
13        unlink ($filename);
14        die('skip cannot be run as root');
15}
16
17unlink($filename);
18
19?>
20--FILE--
21<?php
22/*
23  Prototype: int fileperms ( string $filename );
24  Description: Returns the permissions on the file, or FALSE in case of an error
25
26  Prototype: bool chmod ( string $filename, int $mode );
27  Description: Attempts to change the mode of the file specified by
28               filename to that given in mode
29*/
30
31/* Testing with miscellaneous Permission */
32
33echo "*** Testing fileperms() & chmod() : usage variations ***\n";
34
35$file_name = dirname(__FILE__)."/006_variation2.tmp";
36$file_handle = fopen($file_name, "w");
37fclose($file_handle);
38$dir_name = dirname(__FILE__)."/006_variation2";
39mkdir($dir_name);
40
41echo "\n*** Testing fileperms(), chmod() with miscellaneous permissions ***\n";
42$perms_array = array(
43  /* testing sticky bit */
44  07777,
45  00000,
46  01000,
47  011111,
48  /* negative  values as permission */
49  -0777, // permissions will be given as 2's complement form of -0777
50  -07777, // permissions will be given as 2's complement form of -07777
51
52  /* decimal values as permission  */
53  777, // permissions will be given as octal equivalent value of 777
54  7777, // permissions will be given as octal equivalent value of 7777
55  -7777, // permissions are given as 2's complement of octal equivalent of 7777
56
57  /* hex value as permission */
58  0x777, // permissions will be given as ocatal equivalent value of 0x777
59  0x7777,
60
61  /* strings notation of permission,  wont work properly */
62  "r+w",
63  "r+w+x",
64  "u+rwx",
65  "u+rwx, g+rw, o+wx"
66);
67
68$count = 1;
69foreach($perms_array as $permission) {
70  echo "-- Iteration $count --\n";
71  var_dump( chmod($file_name, $permission) );
72  printf("%o", fileperms($file_name) );
73  echo "\n";
74  clearstatcache();
75
76  var_dump( chmod($dir_name, $permission) );
77  printf("%o", fileperms($dir_name) );
78  echo "\n";
79  clearstatcache();
80  $count++;
81}
82echo "*** Done ***\n";
83?>
84--CLEAN--
85<?php
86chmod(dirname(__FILE__)."/006_variation2.tmp", 0777);
87chmod(dirname(__FILE__)."/006_variation2", 0777);
88unlink(dirname(__FILE__)."/006_variation2.tmp");
89rmdir(dirname(__FILE__)."/006_variation2");
90?>
91--EXPECTF--
92*** Testing fileperms() & chmod() : usage variations ***
93
94*** Testing fileperms(), chmod() with miscellaneous permissions ***
95-- Iteration 1 --
96bool(true)
97107777
98bool(true)
9947777
100-- Iteration 2 --
101bool(true)
102100000
103bool(true)
10440000
105-- Iteration 3 --
106bool(true)
107101000
108bool(true)
10941000
110-- Iteration 4 --
111bool(true)
112101111
113bool(true)
11441111
115-- Iteration 5 --
116bool(true)
117107001
118bool(true)
11947001
120-- Iteration 6 --
121bool(true)
122100001
123bool(true)
12440001
125-- Iteration 7 --
126bool(true)
127101411
128bool(true)
12941411
130-- Iteration 8 --
131bool(true)
132107141
133bool(true)
13447141
135-- Iteration 9 --
136bool(true)
137100637
138bool(true)
13940637
140-- Iteration 10 --
141bool(true)
142103567
143bool(true)
14443567
145-- Iteration 11 --
146bool(true)
147103567
148bool(true)
14943567
150-- Iteration 12 --
151
152Warning: chmod() expects parameter 2 to be int, string given in %s on line %d
153NULL
154103567
155
156Warning: chmod() expects parameter 2 to be int, string given in %s on line %d
157NULL
15843567
159-- Iteration 13 --
160
161Warning: chmod() expects parameter 2 to be int, string given in %s on line %d
162NULL
163103567
164
165Warning: chmod() expects parameter 2 to be int, string given in %s on line %d
166NULL
16743567
168-- Iteration 14 --
169
170Warning: chmod() expects parameter 2 to be int, string given in %s on line %d
171NULL
172103567
173
174Warning: chmod() expects parameter 2 to be int, string given in %s on line %d
175NULL
17643567
177-- Iteration 15 --
178
179Warning: chmod() expects parameter 2 to be int, string given in %s on line %d
180NULL
181103567
182
183Warning: chmod() expects parameter 2 to be int, string given in %s on line %d
184NULL
18543567
186*** Done ***
187