Действительно ли команда PHP link () требует повышенных привилегий в Windows?


Руководство говорит

Примечание: только для Windows: эта функция требует PHP для запуска в повышенный режим или с отключенным UAC.

Но на моей машине с Windows 8 я могу запускать mklink /H без повышенных привилегий, поэтому я не понимаю, почему PHP требует этого. С другой стороны, если я запускаю mklink Без H для создания символьной ссылки, я делаю требую повышенных привилегий, хотя это не комментируется в документах PHP для symlink().

У меня нет установки Windows PHP, поэтому я не могу ее протестировать (и мне интересно, как это применимо к windows 7, vista или чему-то еще). Неужели доктора ошибаются?

2 2

2 ответа:

Вам не нужно работать от имени администратора, чтобы создать жесткую ссылку. Однако, в отличие от UNIX, вам Действительно нужен доступ на запись к цели ссылки.

Я бы рискнул предположить, что автор рассматриваемого документа пытался создать жесткую ссылку на файл, к которому только администраторы имели доступ на запись, и поэтому неверно заключил, что доступ администратора необходим для создания жестких ссылок.

Я протестировал его на своей машине с Windows 8.1, и он, кажется, работает нормально (работает через Apache/CGI)

<pre><?php
var_dump(file_exists('f1'));
var_dump(file_exists('f2'));

var_dump(touch('f1'));
var_dump(link('f1','f2'));

var_dump(file_exists('f1'));
var_dump(file_exists('f2'));

var_dump(file_put_contents('f1', 'test'));
var_dump(file_get_contents('f2'));

Вывод:

boolean false
boolean false
boolean true
boolean true
boolean true
boolean true
int 4
string 'test' (length=4)