|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2000-10-11 11:40 UTC] zak@php.net
[2000-10-11 12:58 UTC] zak@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Nov 05 12:00:01 2025 UTC |
It appears that is_link is incorrect when testing a symbolic link file whose target does not exist. is_link("/absolute/path/to/my/link") returns false when the link points to a non-existant target. I believe it should return true based on the following C code: #include <sys/stat.h> #include <unistd.h> #include <stdio.h> main(int argc, char **argv) { struct stat buf; char * file_name = argv[1]; lstat(file_name, &buf); if (S_ISLNK(buf.st_mode)) { printf("file is a link\n"); } else { printf("file is not a link\n"); } } This prints "file is a link" even when the target doesn't exist. This is an issue because you can't tell when the symlink already exists even if it is incorrect. I've tried lstat (returns 0 length array), fileexists (false), etc. symlink fails on the creation of the link because it is there. It seems like the only way to detect this condition is to have a successful readlink call combined with a false file_exists or symlink call. The ChangeLog for 3.0.15 and 3.0.16 doesn't address this issue as being fixed.