Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Графика > Не работает rename для картинки


Автор: andryus 29.3.2011, 11:43
Параметр ссылки: мойсайт/test.php?mod=choice&dir=animals&n=112.gif

Переходя по данной ссылке передаются значения:
$_GET['n'] = 112.gif
$rash = end(explode(".", $_GET["n"]));
$newname = "test112";

Далее запускается функция:
Код

if(rename('avp/'.$_GET['n'],'avp/'.$newname .'.'.$rash))
{
}else{
   echo "ошибка";
}


Возврат этой процедуры ОШИБКА. В чем дело, почем не срабатывает rename?

Автор: ayax2005 29.3.2011, 13:02
ошибка-то какая?

Автор: andryus 29.3.2011, 13:10
Цитата(ayax2005 @ 29.3.2011,  13:02)
ошибка-то какая?

Та которая в условии написана: echo "ошибка";  smile 

Автор: ayax2005 29.3.2011, 13:13
если rename возвращает false - проверяйте пути и права.

Автор: andryus 29.3.2011, 13:30
Цитата(ayax2005 @ 29.3.2011,  13:13)
если rename возвращает false - проверяйте пути и права.

Насчет прав тут проверять нечего, делается все на денвере на локальном. Насчет путей, то 

Код

echo 'avp/'.$_GET['n'].'<br>';
echo 'avp/'.$newname.'.'.$rash;


Выдает правильный путь:
Код

avp/112.gif
avp/test112.gif

Автор: ayax2005 29.3.2011, 13:32
могу только повторить выше сказанное. Попробуйте добавить / в начале пути.

Автор: andryus 29.3.2011, 13:35
Понял почему не переименовывает. Если есть уже файл test112.gif в данной папке, то он старый не затирает. Неужели нужно применять функцию unlink перед rename ?

Автор: gta4kv 29.3.2011, 14:06
по-моему вполне логично. вы если в винде, да и в линуксе переименовываете файл, он разве его затирает? мне кажется, что нет.

Автор: Genn 8.8.2012, 20:00
надо проверить

Замечание: В версиях PHP ниже 4.3.3, функция rename() не могла переименовать файлы, находящиеся на другом разделе в ОС, основанных на *nix. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)