закачка файла

  • Автор темы negodiy
  • Дата начала

negodiy

Guest
проблема у меня такая...

... при закачки файла на сервере через браузер сервер создает папку tmp и сохраняет все закаченое исключительно туда. если в сценарии я меняю путь то файл вообще не сохраняется на сервере. при этом папка tmp и www (где собственно и хранятся все ХТМЛ и ПХП страницы) находятся на одном уровне. как вылечить сценарий или что то еще что бы файлы закачиваемые через бравайзер сохранялись в www/pictures ?
бъюсь две ночи ниче не получается (( :confused:
 

Сергей123

Новичок
Твой скрипт должен копировать выгруженный в директорию по умолчанию файл в нужное тебе место.
 

Demiurg

Guest
> если в сценарии я меняю путь
какой путь ?
файлы надо копировать.
 

negodiy

Guest
да, это я понял, и еще стирать старый из tmp. тока вот напистаь его у меня мозга не хватает)))

-~{}~ 05.01.05 15:41:

путь который работает:
/home/usename/site.ru/tmp/$story.jpg
если путь меняю то ваабще ниче не сохраняется
 

Фанат

oncle terrible
Команда форума
стирать старый не надо.
надо просто скопировать.
у функции copy два параметра.
первый - путь к файлу, который надо скопировать.
второй - новый путь.
Путь, который работает, лежит в массиве $_FILES
именно его надо использовать
оттуда надо брать путь к закачаному и оттуда брать имя файла, если ты будешь сохраняь под ним же
 

Demiurg

Guest
Стирать ничего не надо.
Для копирования файлов в php есть функция [m]copy[/m] или [m]move_uploaded_file[/m].
Пути работать не могут, они не работники.
 

negodiy

Guest
$filename = /home/usename/site.ru/tmp/$story.jpg";
move_uploaded_file($HTTP_POST_FILES['picture']['tmp_name'],
$filename);
 

Фанат

oncle terrible
Команда форума
negodiy
ты же зотел сохранять в www/pictures?
и откуда берется $story?
 

negodiy

Guest
вот что я имел ввиду говоря что не работает путь
если я пишу /home/usename/site.ru/www/picture/
то файл не сохраняется а мнe выдается сервером вот такая милая ошибка:
Error
Array (
 

Фанат

oncle terrible
Команда форума
Естественно, не сохраняется. ты же имя файла не указываешь.
Никакой ошибки я здесь не вижу. я вижу только распечатку массива.

-~{}~ 05.01.05 15:56:

Вот чудеса.
человек пишет
/home/usename/site.ru/tmp/$story.jpg - работает
а /home/usename/site.ru/www/picture/ - не работает.
НО ПРИ ЭТОМ ОН УВЕРЕН, что проблема - в www/picture!
 

negodiy

Guest
$story.jpg - это переменная у меня. там сценарий хитрый. имя фотки соответствует id в таблице mysql ...
в общем если я путь не меняю то все работает фотки сохраняются в этот tmp только проблема другая уже возникает извлекать их оттудова ведь папки site.ru и tmp в одном каталоге лежат я бы и не против их там оставлять но тогда лдя извлечения их отудова как правильно к ним указать путь?
 

Фанат

oncle terrible
Команда форума
Значит, так.
в обработчике формы пишешь ТОЛЬКО вот это:
ini_set('display_errors',1);
error_reporting(E_ALL);
echo $name='/home/usename/site.ru/www/picture/story.jpg';
echo "<br>";
echo move_uploaded_file($HTTP_POST_FILES['picture']['tmp_name'], $name);
echo "<br>";
echo $php_errmsg;

Запускаешь.
И копируешь сюда НАСТОЯЩЕЕ сообщение обо ошибке, а не всякую фигню.

-~{}~ 05.01.05 16:10:

Потом, в реальном скрипте, не забудь вывести на экран значения всех переменных.
И убедись, что они соответствуют твоим ожиданиям.
 

negodiy

Guest
Warning: move_uploaded_file(/home/usename/site.ru/www/picture/12.jpg): failed to open stream: Permission denied in /home/usename/site.ru/www/myup.php on line 16

Warning: move_uploaded_file(): Unable to move '/home/usename/site.ru/tmp/phpNdUwe5' to '/home/usename/site.ru/www/image/12.jpg' in /home/usename/site.ru/www/myup.php on line 16


Notice: Undefined variable: php_errmsg in /home/usename/site.ru/www/myup.php on line 18
 

Фанат

oncle terrible
Команда форума
Вот.
С этого надо было начинать.
вот теперь мы видим сообщение об ошибке, а не туфту всякую.
прочитав сообщение об ошибке, исправляем его: PHP FAQ: Как установить права на файлы

-~{}~ 05.01.05 16:25:

Теперь ты понял - как важны сообщения об ошибках, почему оператор собака (@) так чудовищно вреден, и почему так важно писать при error_reporting(E_ALL)?
 

negodiy

Guest
))
спасибо))
щас попробую

-~{}~ 05.01.05 17:26:

ура, спасибо! заработало.
 
Сверху