添加注释

用户贡献注释 4 个注释

1
匿名
14 年前
澄清

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

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

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

return
false;
}
}
?>

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

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

PHP link 函数
link ("/dir1/file", "/dir2/"); // 错误,会给出“文件已存在”警告
link ("/dir1/file", "/dir2/file"); // 正常,创建 /dir2/file 链接
-6
crashulater at virtualcrash dot com
6 年前
至少在 php-5.3(linux-2.6.38.6)中,由 apache 拥有的进程可以在由 apache 拥有的目录中创建 link(),指向由 webmaster 拥有的文件,该文件具有组读权限。在 php-7.0(linux-4.13.16)中,这会导致“权限被拒绝”。目标文件必须由 apache 拥有,或者必须使用 copy() 代替(以便所有权更改为 apache)。
To Top