I expected this function to return FALSE or 0 if a symbolic link did not exist (per the documentation above), but that's not what happened. Reading the man page for the Linux kerne's stat call here: http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html it says this:
RETURN VALUE - On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
... which is what is happening in my case. I am doing a linkinfo('/path/to/file'); on a missing symlink, and I get back a value of -1. As we know, a value of -1 is not going to evaluate to a FALSE or 0.
My point - be careful with return values for missing symlinks.
linkinfo
(PHP 4, PHP 5)
linkinfo — Gets information about a link
Description
int linkinfo
( string
$path
)Gets information about a link.
This function is used to verify if a link (pointed to by
path) really exists (using the same method as the
S_ISLNK macro defined in stat.h).
Parameters
-
path -
Path to the link.
Return Values
linkinfo() returns the st_dev field
of the Unix C stat structure returned by the lstat
system call. Returns 0 or FALSE in case of error.
Changelog
| Version | Description |
|---|---|
| 5.3.0 | This function is now available on Windows platforms (Vista, Server 2008 or greater). |
Examples
Example #1 linkinfo() example
<?php
echo linkinfo('/vmlinuz'); // 835
?>
See Also
- symlink() - Creates a symbolic link
- link() - Create a hard link
- readlink() - Returns the target of a symbolic link
rjb at robertjbrown dot com ¶
1 year ago
