添加笔记

用户贡献的笔记 4 条笔记

5
MarkAndrewSlade at gmail dot com
15 年前
如果您传递一个非符号链接,这将触发一个警告并返回 false。 如果文件不存在,它将触发一个措辞不同的警告。

mslade@jupiter ~$ touch a
mslade@jupiter ~$ ln -s a b
mslade@jupiter ~$ ls -l {a,b}
-rw------- 1 mslade mslade 0 2009-06-10 15:27 a
lrwxrwxrwx 1 mslade mslade 1 2009-06-10 15:27 b -> a
mslade@jupiter ~$ php -r "var_dump(readlink('b'));"
string(1) "a"
mslade@jupiter ~$ php -r "var_dump(readlink('a'));"

Warning: readlink(): Invalid argument in Command line code on line 1
bool(false)
mslade@jupiter ~$ php -r "var_dump(readlink('c'));"

Warning: readlink(): No such file or directory in Command line code on line 1
bool(false)
0
casinero dot triste at OH_NO_SPAM dot gmail dot com
7 年前
一个小函数,用于读取到最后的链接
(如果符号链接(最终)指向一个不存在的路径,realpath 就无法做到这一点,因为它在这种情况下只返回 false。)

function readlinkToEnd($linkFilename) {
if(!is_link($linkFilename)) return $linkFilename;
$final = $linkFilename;
while(true) {
$target = readlink($final);
if(substr($target, 0, 1)=='/') $final = $target;
else $final = dirname($final).'/'.$target;
if(substr($final, 0, 2)=='./') $final = substr($final, 2);
if(!is_link($final)) return $final;
}
}
-1
casinero dot triste at OH_NO_SPAM dot gmail dot com
7 年前
一个小函数,用于读取到最后的链接
(如果符号链接(最终)指向一个不存在的路径,realpath 就无法做到这一点,因为它在这种情况下只返回 false。)

function readlinkToEnd($linkFilename) {
if(!is_link($linkFilename)) return $linkFilename;
$final = $linkFilename;
while(true) {
$target = readlink($final);
if(substr($target, 0, 1)=='/') $final = $target;
else $final = dirname($final).'/'.$target;
if(substr($final, 0, 2)=='./') $final = substr($final, 2);
if(!is_link($final)) return $final;
}
}
-8
ayon at hyurl dot com
7 年前
有必要通知您,readlink 仅适用于真实链接文件,如果此链接文件位于目录中,您无法检测和读取其内容,is_link() 函数将始终返回 false,而 readlink() 尝试执行时将显示警告。 以下代码示例
<?php
//假设 A 是位于 C: 中的目录,B 是指向 A 的符号链接,而 A 包含一个名为 C 的文件。
echo is_link('B/C'); //false
echo readlink('B/C'); //false 并将显示警告
//相反,您应该使用 realpath() 函数来获取 C 的真实路径
echo realpath('B/C'); //C:\A\C
?>
To Top