2024年PHP日本大会
添加注释

用户贡献的注释 3 个注释

匿名
15 年前
澄清一下

在 Unix/Linux 中
硬链接(通过此函数)不能跨越不同的文件系统。
软链接可以指向任何地方。

在 Linux 中,不允许对目录进行硬链接。
Jasper Bekkers
18 年前
对于备份实用程序,我需要在 Windows 系统上使用类似链接的功能。由于 Windows 上不可用,我尝试使用一些工具自己完成它。您只需要来自 sysinternals 的 junction.exe 位于您的 %PATH% 中。

<?php
if(!function_exists('link')){ // 假设为 Windows 系统
function link($target, $link){
if(
is_dir($target)){
// junctions 在 windows 中链接到目录
exec("junction $link $target", $lines, $val);
return
0 == $val;
}elseif(
is_file($target)){
// Hardlinks 在 windows 中链接到文件
exec("fsutil hardlink create $link $target", $lines, $val);
return
0 == $val;
}

return
false;
}
}
?>

http://www.sysinternals.com/Utilities/Junction.html
Guilherme Garnier
18 年前
我注意到,与 Unix ln 命令不同,第二个参数不能是目录名,即,如果要创建与目标文件同名的链接(显然在不同的目录中),则必须在链接参数中指定文件名。

示例
Unix ln 命令
ln /dir1/file /dir2/ // ok,创建 /dir2/file 链接

PHP link 函数
link ("/dir1/file", "/dir2/"); // 错误,给出“文件已存在”警告
link ("/dir1/file", "/dir2/file"); // ok,创建 /dir2/file 链接
To Top