User Contributed Notes

Anonymous 16-Oct-2009 10:54
to clarify:

in unix/linux:
hardlinks (by this function) cannot go across different filesystems.
softlinks can point anywhere.

in linux, hardlinking to directory is not permited.
Jasper Bekkers 02-Aug-2006 04:16
For a backup utility I needed link-like functionality on a windows system. As it isn't availible on windows, i tried to do it myself with the help of some tools. All you need is junction.exe from sysinternals in your %PATH%.

<?php
if(!function_exists('link')){ // Assume a windows system
   
function link($target, $link){
        if(
is_dir($target)){
           
// junctions link to directories in windows
           
exec("junction $link $target", $lines, $val);
            return
0 == $val;
        }elseif(
is_file($target)){
           
// Hardlinks link to files in windows
           
exec("fsutil hardlink create $link $target", $lines, $val);
            return
0 == $val;
        }
       
        return
false;
    }
}
?>

http://www.sysinternals.com/Utilities/Junction.html
Guilherme Garnier 25-Apr-2006 08:32
I noticed that, differently from Unix ln command, the second parameter can′t be a directory name, i.e., if you want to create a link with the same filename of the target file (obviously on different directories), you must specify the filename on the link parameter.

Example:
Unix ln command:
ln /dir1/file /dir2/   // ok, creates /dir2/file link

PHP link function:
link ("/dir1/file", "/dir2/");   // wrong, gives a "File exists" warning
link ("/dir1/file", "/dir2/file");   // ok, creates /dir2/file link