Требует ли команда PHP link() повышенных привилегий в Windows?
Руководство говорит
Примечание. Только для Windows: для этой функции требуется PHP для работы в режиме повышенных прав или с отключенным контролем учетных записей.
Но на моем компьютере с Windows 8 я могу запустить mklink /H
без повышенных привилегий, поэтому я не понимаю, почему PHP требует этого. С другой стороны, если я бегу mklink
без H для создания символической ссылки мне требуются повышенные привилегии, хотя это не комментируется в документации PHP для symlink ().
У меня нет установки Windows на PHP, поэтому я не могу ее протестировать (и мне интересно, как это применимо для Windows 7, Vista или чего-то еще). Документы не так?
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)