to clarify:in unix/linux:hardlinks (by this function) cannot go across different filesystems.softlinks can point anywhere.in linux, hardlinking to directory is not permited.
(PHP 4, PHP 5, PHP 7, PHP 8)
link — Создаёт жёсткую ссылку
target
Цель ссылки.
link
Имя ссылки.
Функция возвращает true
, если выполнилась успешно, или false
, если возникла ошибка.
Функция завершается с ошибкой и выдаёт E_WARNING
,
если link
уже существует или если target
не существует.
Пример #1 Создание простой жёсткой ссылки
<?php
$target = 'source.ext'; // Это уже существующий файл
$link = 'newfile.ext'; // Это файл, который вы хотите привязать к первому
link($target, $link);
?>
Замечание: Функция неприменима для работы с удалёнными файлами, поскольку файл должен быть доступен через файловую систему сервера.
Замечание: Только для Windows: Для данной функции необходимо, чтобы PHP был запущен в привилегированном режиме или с отключённым UAC.
to clarify:in unix/linux:hardlinks (by this function) cannot go across different filesystems.softlinks can point anywhere.in linux, hardlinking to directory is not permited.
For a backup utility I needed link-like functionality on a windows system. As it isn't availible on windows, i tried to do it myself with the help of some tools. All you need is junction.exe from sysinternals in your %PATH%.<?phpif(!function_exists('link')){ // Assume a windows system function link($target, $link){ if(is_dir($target)){ // junctions link to directories in windows exec("junction $link $target", $lines, $val); return 0 == $val; }elseif(is_file($target)){ // Hardlinks link to files in windows exec("fsutil hardlink create $link $target", $lines, $val); return 0 == $val; } return false; }}?>http://www.sysinternals.com/Utilities/Junction.html
I noticed that, differently from Unix ln command, the second parameter can´t be a directory name, i.e., if you want to create a link with the same filename of the target file (obviously on different directories), you must specify the filename on the link parameter.Example:Unix ln command:ln /dir1/file /dir2/ // ok, creates /dir2/file linkPHP link function:link ("/dir1/file", "/dir2/"); // wrong, gives a "File exists" warninglink ("/dir1/file", "/dir2/file"); // ok, creates /dir2/file link