1--TEST-- 2Test file_put_contents() function : usage variation - various absolute and relative paths 3--CREDITS-- 4Dave Kelsey <d_kelsey@uk.ibm.com> 5--SKIPIF-- 6<?php 7if(substr(PHP_OS, 0, 3) != "WIN") 8 die("skip Only run on Windows"); 9?> 10--FILE-- 11<?php 12echo "*** Testing file_put_contents() : usage variation ***\n"; 13 14$mainDir = "filePutContentsVar7.dir"; 15$subDir = "filePutContentsVar7Sub"; 16$absMainDir = __DIR__."/".$mainDir; 17mkdir($absMainDir); 18$absSubDir = $absMainDir."\\".$subDir; 19mkdir($absSubDir); 20 21$old_dir_path = getcwd(); 22chdir(__DIR__); 23$unixifiedDir = '/'.substr(str_replace('\\','/',$absSubDir),3); 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 // unixifed path 45 $unixifiedDir, 46); 47 48$filename = 'FileGetContentsVar7.tmp'; 49$absFile = $absSubDir.'/'.$filename; 50$data = "This was the written data"; 51 52for($i = 0; $i<count($allDirs); $i++) { 53 $j = $i+1; 54 $dir = $allDirs[$i]; 55 echo "\n-- Iteration $j --\n"; 56 $res = file_put_contents($dir."\\".$filename, ($data . $i)); 57 if ($res !== false) { 58 $in = file_get_contents($absFile); 59 if ($in == ($data . $i)) { 60 echo "Data written correctly\n"; 61 } 62 else { 63 echo "Data not written correctly or to correct place\n"; 64 } 65 unlink($dir."/".$filename); 66 } 67 else { 68 echo "No data written\n"; 69 } 70 71} 72 73chdir($old_dir_path); 74 75echo "\n*** Done ***\n"; 76?> 77--CLEAN-- 78<?php 79$mainDir = "filePutContentsVar7.dir"; 80$subDir = "filePutContentsVar7Sub"; 81$absMainDir = __DIR__."/".$mainDir; 82$absSubDir = $absMainDir."/".$subDir; 83$filename = 'FileGetContentsVar7.tmp'; 84$absFile = $absSubDir.'/'.$filename; 85@unlink($absFile); 86rmdir($absSubDir); 87rmdir($absMainDir); 88?> 89--EXPECTF-- 90*** Testing file_put_contents() : usage variation *** 91 92-- Iteration 1 -- 93Data written correctly 94 95-- Iteration 2 -- 96Data written correctly 97 98-- Iteration 3 -- 99Data written correctly 100 101-- Iteration 4 -- 102Data written correctly 103 104-- Iteration 5 -- 105 106Warning: file_put_contents(%sfilePutContentsVar7.dir\filePutContentsVar7Sub\..\\\filePutContentsVar7Sub\\..\\..\filePutContentsVar7Sub\FileGetContentsVar7.tmp): Failed to open stream: %s in %s on line %d 107No data written 108 109-- Iteration 6 -- 110 111Warning: file_put_contents(%sfilePutContentsVar7.dir\filePutContentsVar7Sub\BADDIR\FileGetContentsVar7.tmp): Failed to open stream: %s in %s on line %d 112No data written 113 114-- Iteration 7 -- 115Data written correctly 116 117-- Iteration 8 -- 118Data written correctly 119 120-- Iteration 9 -- 121Data written correctly 122 123-- Iteration 10 -- 124Data written correctly 125 126-- Iteration 11 -- 127 128Warning: file_put_contents(BADDIR\FileGetContentsVar7.tmp): Failed to open stream: %s in %s on line %d 129No data written 130 131-- Iteration 12 -- 132Data written correctly 133 134*** Done *** 135