imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 03.02.2010, 15:38     # 1
Yurij
Member
 
Аватар для Yurij
 
Регистрация: 30.05.2003
Адрес: Литва
Пол: Male
Сообщения: 329

Yurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царстве
Проблемы с 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>';
папка открывается, но scandir её не видит.
Колдуя с путями (на уровне: APPLICATION_PATH.'/uploads/id/9/1.jpg ,.../uploads/id/ )иногда симлинк создаётся, но unlink его не удаляет.
В тех случаях, когда он создаётся - я не вычислил, за счёт чего он создаётся
После удаления через Windows начинает снова кидать ошибки

Использую PHP 5.3 из под Windows
Пожалуйста подскажите, как с этим бороться
Yurij вне форума  
Старый 03.02.2010, 16:04     # 2
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 478

Borland - Гад и сволочь
Цитата:
Сообщение от Yurij Посмотреть сообщение
PHP 5.3 из под Windows
Из-под какой Windows? Вообще говоря, под версиями младше Vista/Server2008 оно и не должно работать...
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 03.02.2010, 16:07     # 3
Yurij
Member
 
Аватар для Yurij
 
Регистрация: 30.05.2003
Адрес: Литва
Пол: Male
Сообщения: 329

Yurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царстве
Позабыл написать - Windows 7
В том то и дело, что иногда у меня симлинки создавались, только после ручного их удаления (через виндозу) PHP отказывается их заново создавать
Yurij вне форума  
Старый 03.02.2010, 16:25     # 4
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 478

Borland - Гад и сволочь
Честно говоря, в 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 . '"');
}
?>
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 03.02.2010, 16:40     # 5
Yurij
Member
 
Аватар для Yurij
 
Регистрация: 30.05.2003
Адрес: Литва
Пол: Male
Сообщения: 329

Yurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царствеYurij Луч света в тёмном царстве
Спасибо!
Попробую
Yurij вне форума  

Теги (метки)
symlink


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 05:11.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.