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)){
// 在 Windows 中,junctions 用於連結目錄
exec("junction $link $target", $lines, $val);
return
0 == $val;
}elseif(
is_file($target)){
// 在 Windows 中,硬連結 (Hardlinks) 用於連結檔案
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/ // 正常,建立 /dir2/file 連結

PHP link 函式
link ("/dir1/file", "/dir2/"); // 錯誤,會出現「檔案已存在」的警告
link ("/dir1/file", "/dir2/file"); // 正常,建立 /dir2/file 連結
To Top