2012-07-01 2 views
1

Я пытаюсь создать жесткую ссылку с PHP. Я знаю, что есть три типа ссылок: Символы, жесткие ссылки и узлы каталогов (жесткие ссылки для каталогов).Перекресток каталога в PHP

В PHP символьная ссылка - это функция symlink(), жесткая ссылка - link(), но зачем нужен каталог?

Мне нужно использовать его для веб-приложения, и символической ссылки для меня недостаточно.

Благодаря

+0

Какая операционная система это? –

+0

В настоящее время я запускаю сервер разработки на Windows 7, но производственная среда - Centos (Linux) –

ответ

1

Разделы каталога - это специфичная для NTFS функция. В Linux нет переходов каталогов. Есть directory-binding mounts (см. «Связывание монтирования»), которые обеспечивают аналогичную функциональность, однако они требуют доступа root.

+0

К сожалению, у меня нет доступа root к производственному серверу. И независимо от этого, я спрашивал, как создавать переходы каталога с PHP, мне все равно, является ли оно специфичным для Windows. –

+0

В окнах вам, вероятно, потребуется вызвать [внешнюю утилиту] (http://technet.microsoft.com/en-us/library/cc753194 (WS.10) .aspx). Тем не менее, это не сработает, как только вы переместите свой код на ваш производственный сервер CentOS. – lanzz

1

Вы не можете создавать жесткие ссылки (или «соединение каталогов») для каталогов в Linux, не поддерживаются операционной системой. Я не знаю, можно ли использовать link в Windows, но это должно быть так же просто, как пытаться.

+0

Из того, что я знаю, я не могу использовать 'link()' для каталогов. –

2

У меня была аналогичная проблема, и как я работала именно на системе Windows я сделал:

exec('mklink "' . $linkLocation . '" "' . $linkTarget . '" /J') 

Успешный результат выглядел примерно так:

Junction created for C:\...\... <<===>> C:\...\... 
0

Я использую эту простую функцию , он работает с окнами.

<?php 
function makeSymLink ($target, $link) 
{ 
    exec('mklink /j "' . str_replace('/', '\\', $link) . '" "' .str_replace('/', '\\', $target) . '"'); 
    } 
?>