1--TEST-- 2Test symlink(), linkinfo(), link() and is_link() functions : usage variations - link & lstat[dev] value 3--SKIPIF-- 4<?php 5if (PHP_OS_FAMILY === 'Windows') { 6 require_once __DIR__ . '/windows_links/common.inc'; 7 skipIfSeCreateSymbolicLinkPrivilegeIsDisabled(__FILE__); 8} 9?> 10--FILE-- 11<?php 12/* Prototype: bool symlink ( string $target, string $link ); 13 Description: creates a symbolic link to the existing target with the specified name link 14 15 Prototype: bool is_link ( string $filename ); 16 Description: Tells whether the given file is a symbolic link. 17 18 Prototype: bool link ( string $target, string $link ); 19 Description: Create a hard link 20 21 Prototype: int linkinfo ( string $path ); 22 Description: Gets information about a link 23*/ 24 25/* Variation 9 : Check lstat of soft/hard link created 26 Check linkinfo() value with lstat['dev'] 27*/ 28// temp file used 29$file_path = __DIR__; 30$dirname = $file_path."/symlink_link_linkinfo_is_link_variation9"; 31mkdir($dirname); 32$filename = "$dirname/symlink_link_linkinfo_is_link_variation9.tmp"; 33// soft link name used 34$soft_link = "$dirname/symlink_link_linkinfo_is_link_softlink_variation9.tmp"; 35// hard link name used 36$hard_link = "$dirname/symlink_link_linkinfo_is_link_hardlink_variation9.tmp"; 37 38// create the file 39$fp = fopen($filename, "w"); 40fclose($fp); 41 42echo "*** Checking lstat() on soft link ***\n"; 43// create soft link 44var_dump( symlink($filename, $soft_link) ); 45 46// confirming that linkinfo() = lstat['dev'] , this should always match 47$linkinfo = linkinfo($soft_link); 48$s1 = lstat($soft_link); 49echo "linkinfo() returns integer !== -1: "; 50var_dump(is_int($linkinfo) && $linkinfo !== -1); 51if( $s1[0] == $linkinfo ) 52 echo "\nlinkinfo() value matches lstat['dev']\n"; 53else 54 echo "\nWarning: linkinfo() value doesnt match lstat['dev']\n"; 55// delete link 56unlink($soft_link); 57 58echo "\n*** Checking lstat() on hard link ***\n"; 59// create hard link 60var_dump( link($filename, $hard_link) ); 61// confirming that linkinfo() = lstat['dev'] , this should always match 62$linkinfo = linkinfo($hard_link); 63$s1 = lstat($hard_link); 64echo "linkinfo() returns integer !== -1: "; 65var_dump(is_int($linkinfo) && $linkinfo !== -1); 66if( $s1[0] == $linkinfo ) 67 echo "\nlinkinfo() value matches lstat['dev']\n"; 68else 69 echo "\nWarning: linkinfo() value doesnt match lstat['dev']\n"; 70 71// delete link 72unlink($hard_link); 73 74echo "\n*** Checking lstat() on a soft link to directory ***\n"; 75// create soft link 76var_dump( symlink($dirname, $soft_link) ); 77 78// confirming that linkinfo() = lstat['dev'], this should always match 79$linkinfo = linkinfo($soft_link); 80$s1 = lstat($soft_link); 81echo "linkinfo() returns integer !== -1: "; 82var_dump(is_int($linkinfo) && $linkinfo !== -1); 83if( $s1[0] == $linkinfo ) 84 echo "\nlinkinfo() value matches lstat['dev']\n"; 85else 86 echo "\nWarning: linkinfo() value doesnt match lstat['dev']\n"; 87 88// delete link 89if (PHP_OS_FAMILY === 'Windows') { 90 rmdir($soft_link); 91} else { 92 unlink($soft_link); 93} 94 95echo "Done\n"; 96?> 97--CLEAN-- 98<?php 99$file_path = __DIR__; 100$dirname = $file_path."/symlink_link_linkinfo_is_link_variation9"; 101$filename = "$dirname/symlink_link_linkinfo_is_link_variation9.tmp"; 102unlink($filename); 103rmdir($dirname); 104?> 105--EXPECTF-- 106*** Checking lstat() on soft link *** 107bool(true) 108linkinfo() returns integer !== -1: bool(true) 109 110linkinfo() value matches lstat['dev'] 111 112*** Checking lstat() on hard link *** 113bool(true) 114linkinfo() returns integer !== -1: bool(true) 115 116linkinfo() value matches lstat['dev'] 117 118*** Checking lstat() on a soft link to directory *** 119bool(true) 120linkinfo() returns integer !== -1: bool(true) 121 122linkinfo() value matches lstat['dev'] 123Done 124