1--TEST-- 2Test copy() function: usage variations - copying links across dirs 3--SKIPIF-- 4<?php 5if(substr(PHP_OS, 0, 3) == "WIN") 6 die("skip Invalid for Windows"); 7?> 8--FILE-- 9<?php 10/* Prototype: bool copy ( string $source, string $dest ); 11 Description: Makes a copy of the file source to dest. 12 Returns TRUE on success or FALSE on failure. 13*/ 14 15/* Trying to copy the links across dir paths given in various notations 16 and dirs having limited access */ 17 18echo "*** Testing copy() function: copying links across different directories ***\n"; 19 20$file_path = __DIR__; 21 22$base_dir = $file_path."/copy_variation8"; 23mkdir($base_dir); 24$sub_dir = $base_dir."/copy_variation8_sub"; 25mkdir($sub_dir); 26$dirname_with_blank = $sub_dir."/copy variation6"; 27mkdir($dirname_with_blank); 28 29$file = $file_path."/copy_variation8.tmp"; 30fclose( fopen($file, "w") ); 31 32$symlink = $file_path."/copy_variation8_symlink.tmp"; 33$hardlink = $file_path."/copy_variation8_hardlink.tmp"; 34 35symlink($file, $symlink); //creating symlink 36link($file, $hardlink); //creating hardlink 37 38$dests = array( 39 $base_dir."/copy_copy_variation8.tmp", 40 $base_dir."/copy_variation8_sub/copy_copy_variation8.tmp", 41 "$sub_dir/copy_copy_variation8.tmp", 42 "$sub_dir/../copy_copy_variation8.tmp", 43 "$sub_dir/../copy_variation8_sub/copy_copy_variation8.tmp", 44 "$sub_dir/..///../copy_copy_variation8.tmp", 45 "$sub_dir///../*", 46 "$dirname_with_blank/copy_copy_variation8.tmp" 47); 48 49$count = 1; 50foreach($dests as $dest) { 51 echo "\n-- Iteration $count --\n"; 52 echo "- With symlink -\n"; 53 var_dump( copy($symlink, $dest) ); 54 var_dump( file_exists($dest) ); 55 var_dump( is_link($dest) ); //expected: bool(false) 56 var_dump( is_file($dest) ); //expected: bool(true) 57 clearstatcache(); 58 unlink("$dest"); 59 echo "- With hardlink -\n"; 60 var_dump( copy($hardlink, $dest) ); 61 var_dump( file_exists($dest) ); 62 var_dump( is_link($dest) ); //expected: bool(flase) 63 var_dump( is_file($dest) ); //expected: bool(true) 64 clearstatcache(); 65 unlink("$dest"); 66 $count++; 67} 68 69unlink($symlink); 70unlink($hardlink); 71unlink($file); 72rmdir($dirname_with_blank); 73rmdir($sub_dir); 74rmdir($base_dir); 75 76echo "*** Done ***\n"; 77?> 78--EXPECT-- 79*** Testing copy() function: copying links across different directories *** 80 81-- Iteration 1 -- 82- With symlink - 83bool(true) 84bool(true) 85bool(false) 86bool(true) 87- With hardlink - 88bool(true) 89bool(true) 90bool(false) 91bool(true) 92 93-- Iteration 2 -- 94- With symlink - 95bool(true) 96bool(true) 97bool(false) 98bool(true) 99- With hardlink - 100bool(true) 101bool(true) 102bool(false) 103bool(true) 104 105-- Iteration 3 -- 106- With symlink - 107bool(true) 108bool(true) 109bool(false) 110bool(true) 111- With hardlink - 112bool(true) 113bool(true) 114bool(false) 115bool(true) 116 117-- Iteration 4 -- 118- With symlink - 119bool(true) 120bool(true) 121bool(false) 122bool(true) 123- With hardlink - 124bool(true) 125bool(true) 126bool(false) 127bool(true) 128 129-- Iteration 5 -- 130- With symlink - 131bool(true) 132bool(true) 133bool(false) 134bool(true) 135- With hardlink - 136bool(true) 137bool(true) 138bool(false) 139bool(true) 140 141-- Iteration 6 -- 142- With symlink - 143bool(true) 144bool(true) 145bool(false) 146bool(true) 147- With hardlink - 148bool(true) 149bool(true) 150bool(false) 151bool(true) 152 153-- Iteration 7 -- 154- With symlink - 155bool(true) 156bool(true) 157bool(false) 158bool(true) 159- With hardlink - 160bool(true) 161bool(true) 162bool(false) 163bool(true) 164 165-- Iteration 8 -- 166- With symlink - 167bool(true) 168bool(true) 169bool(false) 170bool(true) 171- With hardlink - 172bool(true) 173bool(true) 174bool(false) 175bool(true) 176*** Done *** 177