is_link

(PHP 3, PHP 4, PHP 5)

is_link -- 判断给定文件名是否为一个符号连接

说明

bool is_link ( string filename )

如果文件存在并且是一个符号连接则返回 TRUE

注: 本函数的结果会被缓存。更多信息参见 clearstatcache()

提示: PHP 5.0.0 起本函数也可被某些 URL wrapper 使用。参考附录 L 来看哪些 wrapper 支持 stat() 系列函数的功能。

参见 is_dir()is_file()readlink()


add a note add a note User Contributed Notes
brendy at gmail dot com
06-May-2006 10:22
On Mac OSX, to see if a file is a FInder alias:

<?PHP
if( getFinderAlias( $someFile , $target ) ) {
 echo
$target;
}
else {
 echo
"File is not an alias";
}

function
getFinderAlias( $filename , &$target ) {
$getAliasTarget = <<< HEREDOC
    -- BEGIN APPLESCRIPT --
   set checkFileStr to "
{$filename}"
   set checkFile to checkFileStr as POSIX file
   try
       tell application "Finder"
           if original item of file checkFile exists then
               set targetFile to (original item of file checkFile) as alias
               set posTargetFile to POSIX path of targetFile as text
               get posTargetFile
           end if
       end tell
   end try
   -- END APPLESCRIPT --
HEREDOC;
$runText = "osascript << EOS\n{$getAliasTarget}\nEOS\n";
$target = trim( shell_exec( $runText ) );
return (
$target == "" ? false : true );
}
?>
jr at cnb dot uam dot es
31-May-2005 02:31
Why don't you just try

is_dir("$pathname/.")

instead?

If $pathname is a directory, $pathname/. is itself and is a directory too.

If $pathname is a link to a directory, then $pathname/. is the actual directory pointed at and is a directory as well.

If $pathname is a link to a non-directory, then $pathname/. does not exist and returns FALSE, as it should.

A lot easier, more readable and intuitive.
andudi at gmx dot ch
03-Jun-2002 01:44
On my SuSE 7.2 is_link does not work on directories, but to find out, if a dir is a link, I use now this:

$linkdir = $path.$linkdirname;
if (realpath($linkdir) != realpath($path)."/".$linkdirname):
//$linkdir is a symbolic linked dir!
...

and this works fine :-)

Andreas Dick
aris at riponce dot com
27-Mar-2001 06:27
If you test a symbolic (soft) link with is_file() it will return true. Either use filetype() which always returns the correct type OR make sure that you FIRST test with is_link() before you do with is_file() to get the correct type.