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
структуры stat из Unix C, которую возвращает системный вызов
lstat.
Возвращает 0 или FALSE в случае ошибки.
Список изменений
| Версия | Описание |
|---|---|
| 5.3.0 | Эта функция теперь доступна и на Windows платформах (Vista, Server 2008 и выше). |
Примеры
Пример #1 Пример использования функции linkinfo()
<?php
echo linkinfo('/vmlinuz'); // 835
?>
Смотрите также
- symlink() - Создаёт символическую ссылку
- link() - Создаёт жёсткую ссылку
- readlink() - Возвращает файл, на который указывает символическая ссылка
rjb at robertjbrown dot com ¶
1 year ago
