1--TEST-- 2Test symlink(), linkinfo(), link() and is_link() functions: basic functionality - link to files 3--SKIPIF-- 4<?php 5if (substr(PHP_OS, 0, 3) == 'WIN') { 6 die('skip no symlinks on Windows'); 7} 8?> 9--FILE-- 10<?php 11/* Prototype: bool symlink ( string $target, string $link ); 12 Description: creates a symbolic link to the existing target with the specified name link 13 14 Prototype: bool is_link ( string $filename ); 15 Description: Tells whether the given file is a symbolic link. 16 17 Prototype: bool link ( string $target, string $link ); 18 Description: Create a hard link 19 20 Prototype: int linkinfo ( string $path ); 21 Description: Gets information about a link 22*/ 23 24$file_path = dirname(__FILE__); 25 26// temp dir created in present working directory 27$dirname = "symlink_link_linkinfo_is_link_basic1"; 28mkdir("$file_path/$dirname"); // creating temp dir 29 30/* Creating soft/hard link to $filename created in temp directory $dirname 31 and checking linkinfo() and is_link() on the link created */ 32 33echo "*** Testing symlink(), linkinfo(), link() and is_link() : basic functionality ***\n"; 34 35// creating file in $dirname, links are created to the this file 36$filename = "$file_path/$dirname/symlink_link_linkinfo_is_link_basic1.tmp"; 37$filename = fopen($filename, "w"); 38fclose($filename); 39 40// name of the soft link created to $filename 41$sym_linkname = "$file_path/$dirname/symlink_link_linkinfo_is_link_softlink_basic1.tmp"; 42 43// name of the hard link created to $filename 44$linkname = "$file_path/$dirname/symlink_link_linkinfo_is_link_hardlink_basic1.tmp"; 45 46// filename stored in array with single and double slash notation in its path 47$files = array ( 48 "$file_path/$dirname/symlink_link_linkinfo_is_link_basic1.tmp", 49 "$file_path//$dirname//symlink_link_linkinfo_is_link_basic1.tmp" 50); 51 52$counter = 1; 53/* create soft/hard link to the file 54 and check linkinfo() and is_link() on the link created */ 55foreach($files as $file) { 56 echo "\n-- Iteration $counter --\n"; 57 echo "-- Testing on soft links --\n"; 58 // create soft link 59 var_dump( symlink($file, $sym_linkname) ); 60 // checking information of link with linkinfo() 61 var_dump( linkinfo($sym_linkname) ); 62 // checking if given file is soft link 63 var_dump( is_link($sym_linkname) ); 64 // clear the cache 65 clearstatcache(); 66 67 // testing on hard link 68 echo "-- Testing on hard links --\n"; 69 // creating hard link 70 var_dump( link($file, $linkname) ); 71 // checking information of link with linkinfo() 72 var_dump( linkinfo($linkname) ); 73 // checking if given link is soft link; expected: false 74 var_dump( is_link($linkname) ); 75 // clear the cache 76 clearstatcache(); 77 78 // deleting the links 79 unlink($sym_linkname); 80 unlink($linkname); 81 $counter++; 82} 83 84echo "Done\n"; 85?> 86--CLEAN-- 87<?php 88$dirname = dirname(__FILE__)."/symlink_link_linkinfo_is_link_basic1"; 89unlink("$dirname/symlink_link_linkinfo_is_link_basic1.tmp"); 90rmdir($dirname); 91?> 92--EXPECTF-- 93*** Testing symlink(), linkinfo(), link() and is_link() : basic functionality *** 94 95-- Iteration 1 -- 96-- Testing on soft links -- 97bool(true) 98int(%d) 99bool(true) 100-- Testing on hard links -- 101bool(true) 102int(%d) 103bool(false) 104 105-- Iteration 2 -- 106-- Testing on soft links -- 107bool(true) 108int(%d) 109bool(true) 110-- Testing on hard links -- 111bool(true) 112int(%d) 113bool(false) 114Done 115