| imho.ws |
![]() |
|
|
|
# 1 |
|
Member
Регистрация: 30.05.2003
Адрес: Литва
Пол: Male
Сообщения: 329
![]() ![]() ![]() ![]() ![]() ![]() |
Проблемы с symlink()
Добрый день!
Возникли непонятки с symlink'ом. Мне нужно создать симлинк на директорию и получить ссылку на неё. Позже удалить симлинк. Пробовал делать вот таким способом : Код:
$target = APPLICATION_PATH.'/uploads/id/9/';//$target = APPLICATION_PATH."/uploads/id/$id/";
$link = "/uploads/id/$id/"; //$link = "/uploads/id/9/";
symlink($target, $link); //symlink(APPLICATION_PATH.'/uploads/id/9/','/uploads/id/9/');
...
clearstatcache();
unlink ($link)
- кидает эррор: Ошибка: Код:
Warning: symlink() [function.symlink]: Cannot create symlink, error code(3) бывает и error code(103) Причём сделав вывод Код:
echo '<a href="'.$link.'">asd</a>'; Колдуя с путями (на уровне: APPLICATION_PATH.'/uploads/id/9/1.jpg ,.../uploads/id/ )иногда симлинк создаётся, но unlink его не удаляет.В тех случаях, когда он создаётся - я не вычислил, за счёт чего он создаётся ![]() ![]() После удаления через Windows начинает снова кидать ошибки Использую PHP 5.3 из под Windows Пожалуйста подскажите, как с этим бороться
|
|
|
|
|
# 2 |
|
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 523
![]() |
Из-под какой Windows? Вообще говоря, под версиями младше Vista/Server2008 оно и не должно работать...
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
|
|
|
|
# 4 |
|
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 523
![]() |
Честно говоря, в PHP не силён.
Однако нашёл как минимум 2 сообщения о багах PHP при работе с симлинками и точками монтирования под Windows... А на страничке мануала http://php.net/manual/en/function.symlink.php нашлось обходное решение - использование стандартной Win-команды для создания симлинков. Код:
<?php
define('SYMLINK_FILE', 0);
define('SYMLINK_DIR', 1);
define('SYMLINK_JUNCTION', 2);
function symlink ($target, $link, $flag = SYMLINK_FILE) {
switch ($flag) {
case SYMLINK_DIR: $pswitch = '/d'; break;
case SYMLINK_JUNCTION: $pswitch = '/j'; break;
case SYMLINK_FILE:
default: $pswitch = ''; break;
}
// Change / to \ because it will break otherwise.
$target = str_replace('/', '\\', $target);
$link = str_replace('/', '\\', $link);
return exec('mklink ' . $pswitch . ' "' . $link . '" "' . $target . '"');
}
?>
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
|
|
| Теги (метки) |
| symlink |
|
|