Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > copy or move


Автор: Sun_ok 22.5.2010, 14:24
Здравствуйте, возникла проблема с копированием файла, уже второй день сражаюсь и все безрезультатно.
Итак:
Код


use File::Path;
use File::Copy;
print "Content-type: text/html\r\n\r\n";
print "Hello there!<br />\nJust testing some things.<br />\n";

$dir_path = '/var/www/sun_nik/catalog/Dolphin3.avi';
print copy("Dolphin3.avi",$dir_path) or die "Copy failed: $!";



результат всегда  0;
каталог с правами 777, путь правильный 100% так-как если написать например 

Код

$dir_path = '/var/www/sun_nik/catalog/Dolphin.avi';
print copy($dir_path,"Dolphin.avi") or die "Copy failed: $!";

то файл Dolphin.avi будет скопирован в текущую директорию, 
то-есть когда, я в пути цели копирования указываю любую директорию кроме текущей возвращает 0 и ничего не делает (
Тот-же результат при использовании move.



Автор: Pfailed 22.5.2010, 16:49
Смотрите какое сообщение выдаёт die "Copy failed: $!";

Автор: klem4 23.5.2010, 15:30
Код

print copy("Dolphin3.avi",$dir_path) or die "Copy failed: $!";

Файл Dolphin3.avi лежит в директории со скриптом ?

Автор: Sun_ok 23.5.2010, 19:47
Код

print copy("Dolphin3.avi",$dir_path) or die "Copy failed: $!";

Эта строчка выводит 0, если print убрать, то вообще ничего.


Цитата(klem4 @  23.5.2010,  15:30 Найти цитируемый пост)
Файл Dolphin3.avi лежит в директории со скриптом ? 
  Да ! 

Автор: Sun_ok 23.5.2010, 20:19
у меня была похожая проблема, но с аплоадом файлов там оказалось, что часть пути в директорию необходимо было проверить регулярным вырожением, так-как эта часть была из POST запроса. 
Код

$userid = ($userid =~ /(.*)/s)[0]; 

после чего все заработало, может тут что-то похожее, хотя все пути из внутренних переменных.
Да и подобные движения с $dir_path ни к чему не привели :( .

Автор: NightFall 23.5.2010, 20:43
Как уже писал Pfailed, надо смотреть, что пишет die.

Цитата(Sun_ok @  22.5.2010,  14:24 Найти цитируемый пост)
Код

print copy("Dolphin3.avi",$dir_path) or die "Copy failed: $!";

результат всегда  0;


Значит, copy() возвращает 0. print его печатает и возвращает true, поэтому die не выполняется вообще.
Убрать print и оставить только 
Код

copy("Dolphin3.avi",$dir_path) or die "Copy failed: $!";

Ну и в логах посмотреть, какую ошибку выведет.

Автор: klem4 24.5.2010, 19:08
Цитата(Sun_ok @ 23.5.2010,  19:47)
Код

print copy("Dolphin3.avi",$dir_path) or die "Copy failed: $!";

Эта строчка выводит 0, если print убрать, то вообще ничего.


Цитата(klem4 @  23.5.2010,  15:30 Найти цитируемый пост)
Файл Dolphin3.avi лежит в директории со скриптом ? 
  Да !

а в директорию с правами скрипта писать можно ?

точнее с правами того, от чьего имени запускается скрипт.

Автор: Sun_ok 24.5.2010, 21:44
Цитата(klem4 @  24.5.2010,  19:08 Найти цитируемый пост)
а в директорию с правами скрипта писать можно ?

Можно так-как, я делаю аплоад файлов, в ту директорию.
Вообще задача следующая, я должен загружать видео файл затем конвертировать (ffmpeg), загружать удается, читать из той директории куда загрузил тоже, а вот сконвертированное видео залить не получается, поэтому, я решил конвертировать в директорию с скриптом затем копировать в нужную, но результат тот-же.

Автор: Sun_ok 24.5.2010, 23:58
Цитата(klem4 @  24.5.2010,  19:08 Найти цитируемый пост)
а в директорию с правами скрипта писать можно ?

точнее с правами того, от чьего имени запускается скрипт.


Все таки да, я немного перепутал директории, дело было в правах доступа, спасибо klem4 !!

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