ошибка копирования файла при записи на сервер

Avgustina

Новичок
ошибка копирования файла при записи на сервер

Форма для загрузки файла:

<form enctype="multipart/form-data" name="pictures" method="POST" action="addok.php">
<table>
<tr>
<td>
Изображение:
</td>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<input name="picture" type="file" SIZE="50">
</td>
</tr>
</table>
</form>


Обработчик (addok.php):

<?

if(isset($_FILES["picture"]))
{
$picture = $_FILES["picture"]["tmp_name"];
$picture_name = $_FILES["picture"]["name"];
$picture_size = $_FILES["picture"]["size"];
$picture_type = $_FILES["picture"]["type"];
$error_flag = $_FILES["picture"]["error"];

// Если ошибок не было
if($error_flag == 0)
{
print("Имя файла на нашем сервере (во время запроса): ".$picture."<br>");
print("Имя файла на компьютере пользователя: ".$picture_name."<br>");
print("MIME-тип файла: ".$picture_type."<br>");
print("Размер файла: ".$picture_size."<br><br>");

}


$dir = "var/www/domain.ru/pictures/";
(вместо domain.ru, разумеется, пишу домен моего сайта без http:// и без www.)

copy($_FILES['picture']['tmp_name'],"$dir".$_FILES['picture']['name']);

if(copy($_FILES['picture']['tmp_name'],"$dir".$_FILES['picture']['name']))
{ echo "Файл успешно загружен"; }
else {echo "Ошибка загрузки файла"; }


}
?>

На папке 'pictures' стоят права 777

На сервер файл загружается, выдается вся информация о нем - а в папку не копируется. Перелопатила несколько книжек по php и рекомендации в инете на тему загрузки файлов на сервер - везде варианты написания скрипта примерно одинаковы. Пробовала вместо функции copy использовать move_uploaded_file - тот же нулевой результат.

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

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума

Avgustina

Новичок
это ошибка загрузки файлов на сервер, когда вывожу - пишет 0, т.е. ошибок нет.
на сервер файл загружается (во временную директорию), а вот оттуда в нужную папку - не копируется.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума

Avgustina

Новичок
если первую строчку убрать, эффект тот же

а каким образом его включить?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
а каким образом его включить?
все описано по ссылке в предыдушем сообщении

-~{}~ 01.03.08 23:46:

если первую строчку убрать, эффект тот же
естественно. Я просто указал, что ты делаешь 2 раза одну и ту-же операцию.
С тем отличием, что 2-й раз ты заворачиваешь ее в if.
 

Avgustina

Новичок
там о другом речь
там описаны ошибки загрузки файлов на сервер
в этом месте никаких ошибок не возникает
файл загружается на сервер во временную директорию
потом идет функция копирования его оттуда в нужную мне папку, и вот эта функция не выполняется почему-то.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
То, что у тебя файл загрузился на сервер еще не означает, что он удачно будет скопирован в нужное место. Правда ведь?
Если ф-ция
не выполняется почему-то
это означает что в этой функции есть какие-то ошибки при выполнении. И эти, какие-то ошибки, имеют свойство выводиться в браузер.

Вот вывод этих ошибок и нужно включить.
 

Avgustina

Новичок
спасибо, твое сообщение просто прочитала раньше, чем ты его отредактировал и вставил ссылку на FAQ. Читаю
 

TutanXamoN

Новичок
$error_flag = $_FILES["picture"]["error"];
Ето не есть все ошибки которые могут возникнуть:)
Насколько я знаю при загрузке возникают 4 ошибки:
1.
PHP:
$_FILES['userfile']['tmp_name']=='none'
(файла нет)
2.
PHP:
$_FILES['userfile']['size']==0
(файл пуст)
3.
PHP:
!is_uploaded_file($_FILES['userfile']['tmp_name'])
(файл не загрузился)
4.
PHP:
!copy($_FILES['userfile']['tmp_name'],$upfile)
(не удалось скопировать)

И проверять надо их всех.
 

Avgustina

Новичок
Урра, заработало! Макс, спасибо огромное.
Я так и думала, что проблема с путями, но не фтыкнула как его правильно указать, вот

$dir = "/home/user/domain.ru/www/pictures/";
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
TutanXamoN
Насколько я знаю при загрузке возникают 4 ошибки:
Если ты имел ввиду $_FILES["picture"]["error"]
то у тебя неполная информация. ;)
Посмотри английскую версию мануала.
 

TutanXamoN

Новичок
Я знаю что есть ещё превышение размеров(PHP||HTML_FORM) + частичная загрузка + нет темп дира + помешал екстеншн которые отлавливаются $error_flag = $_FILES["picture"]["error"];
:)
Но ведь в данном случае их уже обработали.
 
Сверху