|
is_link
Tells whether the filename is a symbolic link
(PHP 4, PHP 5)
Code Examples / Notes » is_linkjr
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
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 brendy
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 ); } ?> aris
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.
neverpanic->gmail com
For me (Debian Sarge VPS) is_link returns true even for directories if you don't add a trailing slash to the filename. <?php if ($dir{strlen($dir)-1} == '/') $dir = substr($dir, 0, -1); is_link($dir); ?> This works for me. It can't detect a symlink somewhere in a complete path, though (i.e. is_link(/www/somedir/file.php) will return false, just as is_link(/www/) would) |
Change Languagebasename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputcsv fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable lchgrp lchown link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink |