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