1--TEST--
2Test file_put_contents() function : usage variation - various absolute and relative paths
3--CREDITS--
4Dave Kelsey <d_kelsey@uk.ibm.com>
5--FILE--
6<?php
7echo "*** Testing file_put_contents() : usage variation ***\n";
8
9$mainDir = "filePutContentsVar7.dir";
10$subDir = "filePutContentsVar7Sub";
11$absMainDir = __DIR__."/".$mainDir;
12mkdir($absMainDir);
13$absSubDir = $absMainDir."/".$subDir;
14mkdir($absSubDir);
15
16$old_dir_path = getcwd();
17chdir(__DIR__);
18
19
20// Note invalid dirs in p8 result in (The system cannot find the path specified.)
21// rather than No Such File or Directory in php.net
22$allDirs = array(
23  // absolute paths
24  "$absSubDir/",
25  "$absSubDir/../".$subDir,
26  "$absSubDir//.././".$subDir,
27  "$absSubDir/../../".$mainDir."/./".$subDir,
28  "$absSubDir/..///".$subDir."//..//../".$subDir,
29  "$absSubDir/BADDIR",
30
31  // relative paths
32  $mainDir."/".$subDir,
33  $mainDir."//".$subDir,
34   $mainDir."///".$subDir,
35  "./".$mainDir."/../".$mainDir."/".$subDir,
36  "BADDIR",
37
38);
39
40$filename = 'FileGetContentsVar7.tmp';
41$absFile = $absSubDir.'/'.$filename;
42$data = "This was the written data";
43
44for($i = 0; $i<count($allDirs); $i++) {
45  $j = $i+1;
46  $dir = $allDirs[$i];
47  echo "\n-- Iteration $j --\n";
48  $res = file_put_contents($dir."/".$filename, ($data . $i));
49  if ($res !== false) {
50      $in = file_get_contents($absFile);
51      if ($in == ($data . $i)) {
52         echo "Data written correctly\n";
53      }
54      else {
55         echo "Data not written correctly or to correct place\n";
56      }
57      unlink($dir."/".$filename);
58  }
59  else {
60     echo "No data written\n";
61  }
62
63}
64
65chdir($old_dir_path);
66
67echo "\n*** Done ***\n";
68?>
69--CLEAN--
70<?php
71$mainDir = "filePutContentsVar7.dir";
72$subDir = "filePutContentsVar7Sub";
73$absMainDir = __DIR__."/".$mainDir;
74$absSubDir = $absMainDir."/".$subDir;
75$filename = 'FileGetContentsVar7.tmp';
76$absFile = $absSubDir.'/'.$filename;
77@unlink($absFile);
78rmdir($absSubDir);
79rmdir($absMainDir);
80?>
81--EXPECTF--
82*** Testing file_put_contents() : usage variation ***
83
84-- Iteration 1 --
85Data written correctly
86
87-- Iteration 2 --
88Data written correctly
89
90-- Iteration 3 --
91Data written correctly
92
93-- Iteration 4 --
94Data written correctly
95
96-- Iteration 5 --
97
98Warning: file_put_contents(%sfilePutContentsVar7.dir/filePutContentsVar7Sub/..///filePutContentsVar7Sub//..//../filePutContentsVar7Sub/FileGetContentsVar7.tmp): Failed to open stream: %s in %s on line %d
99No data written
100
101-- Iteration 6 --
102
103Warning: file_put_contents(%sfilePutContentsVar7.dir/filePutContentsVar7Sub/BADDIR/FileGetContentsVar7.tmp): Failed to open stream: %s in %s on line %d
104No data written
105
106-- Iteration 7 --
107Data written correctly
108
109-- Iteration 8 --
110Data written correctly
111
112-- Iteration 9 --
113Data written correctly
114
115-- Iteration 10 --
116Data written correctly
117
118-- Iteration 11 --
119
120Warning: file_put_contents(BADDIR/FileGetContentsVar7.tmp): Failed to open stream: %s in %s on line %d
121No data written
122
123*** Done ***
124