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 — Pobiera informacje o linku
Opis
int linkinfo
( string
$ścieżka
)
linkinfo() zwraca pole st_dev o strukturze
unix'owej funkcji (języka C) stat, pole zwracane jest poprzez wywołanie systemowe lstat.
Ta funkcja używana jest do weryfikacji czy link (wskazywany przez
ścieżkę) naprawdę istnieje (używana jest ta sama metoda
co w makrze S_ISLNK zdefiniowanym w stat.h). Zwraca 0 lub FALSE w przypadku
błędu.
Przykład #1 przykład linkinfo()
<?php
echo linkinfo('/vmlinuz'); // 835
?>
Informacja: Ta funkcja nie jest dostępna na platformie Windows.
Patrz także: symlink(), link() i readlink().
rjb at robertjbrown dot com
21-Feb-2012 01:14
