Без заголовка

Я очень часто начинаю разрабатывать проект под Windows и заканчиваю - под Linux или freeBSD. Конечно, даже на уровне PHP, между этими группами операционных систем есть существенные различия. Обычно, они легко преодолеваются. В последнем проекте мне более всего не хватало функции link.

Поэкспериментировав с w32api и ffi, я понял, что этот путь - тупиковый. Побродив по поисковикам, я выяснил, что простейший выход - использовать в качестве заглушки утилиту fsutil из Windows XP. У неё есть параметр "hardlink create", позволяющий создавать ссылки.
if (PHP_OS == 'WINNT' && file_exists($_ENV['windir'].'\system32\fsutil.exe'))
{
	function link($target, $link)
	{
		$cmd = $_ENV['windir'].'\system32\fsutil.exe hardlink create';
		exec ($cmd.' "'.$link.'" "'.$target, $out, $ret);

		return !$ret;
	}
}
В случае, если вы будете использовать эту функцию в проекте, будьте осторожны - это всего лишь заглушка. Во-первых, одна ссылка создаётся примерно за 0.6 - 1сек, во-вторых, в ней нет проверки на наличие специальных символов в переменных $target и $link - если там попадётся кавычка, возникнет опасность внедрения вредоносного кода.
24 августа 2004 19:00

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML: