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 — Взима информация относно връзка
Описание
int linkinfo
( string $path
)
Взима информация относно връзка.
Тази функция се използва да се провери дали дадена връзка (посочена чрез path ) наистина съществува (използвайки същия метод както и макроса S_ISLNK, дефиниран в stat.h)
Параметри
- path
-
Път до връзката.
Връщани стойности
Функцията linkinfo() връща полето st_dev от Unix C stat структурата, връщана от системното извикване lstat. В случай на грешка връща 0 или FALSE.
Примери
Example #1 linkinfo() пример
<?php
echo linkinfo('/vmlinuz'); // 835
?>
Бележки
Забележка: Тази функция не е налична на Windows платформи.
Вж. също
- symlink() - Създава символична връзка
- link() - Създава "твърда връзка"
- readlink() - Връща името на файла сочен от символична връзка
rjb at robertjbrown dot com
20-Feb-2012 06:14
