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