Файл не загружается на новой странице, но загружался на старой

TheRealKos

Новичок
Доброго времени суток. Такая ситуация. На index.php есть форма для загрузки файлов. Дальше данные идут на upload.php. В принципе все грузится нормально. Но потребовалось сначала обработать файл (с помощью регулярок - сделал), дальше эту информацию подредактировать на result.php и уже чтобы загрузка прошла на upload_full.php. (С переменными все в порядке...).

И вот в upload.php как раз сам файл не грузится...при этом [error] => 0.

index.php:
PHP:
 echo "Загружать можно только файлы в формате '.doc', '.docx' и '.pdf'!<br>";
echo "<form method='post' action='upload.php' enctype ='multipart/form-data'>";
echo "Файл: <input type='file' name='filename' size='9'/> <br>";
echo "<input type='submit' value='Загрузить на сервер'/>";
echo "</form>";
upload.php:
PHP:
include ("bd.php");
//регулярки, еще функции...
$result2 = mysql_query("INSERT INTO `files` (`file_id`, `poluchatel_file`, `tema`, `rukov`, `konsul`, `yazik`, `sreda`, `group_f`, `name_f`, `familiya_f`, `year`, `predmet`, `url`) VALUES ('$file_id', '$poluchatel_file', '$temas', '$rukovs', '$konsuls', '$yaziks', '$sredas', '$group_f', '$name_f', '$familiya_f', '$year', '$predmet', '$url')");

$file_translit=strtr($_FILES["filename"]["name"], $translit);
$_SESSION['file_tr'] = $file_translit;
$_SESSION['file'] = $_FILES;
echo '<pre>';
    print_r($_FILES);
echo '</pre>';
  //вот тут нормально загружалось...но нужно подредактировать данные...
  //if(@copy($_FILES["filename"]["tmp_name"],"upload/".$_SESSION["group"]."/".$_SESSION["login"]."/$predmet/".$file_translit))
  //{
    //echo("Файл успешно загружен <br> <a href='index.php'> Вернуться на главную</a>");
  //}
}
else
  { exit ("Ошибка загрузки файла <br> <a href='index.php'> Вернуться на главную</a>"); }
upload_full.php (Всегда выдает ошибку загрузки файлов, хотя [error] => 0):
PHP:
//функции...
$predmet = strtr($_POST['predmet'], $translit2);
$file_translit = $_SESSION['file_tr'];
$upload_file = $_SESSION['file'];
echo '<pre>';
print_r($upload_file);
echo '</pre>';
//все папки создаются и $file_translit имеет то имя, которое имеет и файл...
  if(copy($upload_file["filename"]["tmp_name"],"upload/".$_SESSION["group"]."/".$_SESSION["login"]."/$predmet/".$file_translit))
  {
    echo("Файл успешно загружен <br> <a href='index.php'> Вернуться на главную</a>");
  }
else
  { exit ("Ошибка загрузки файла <br> <a href='index.php'> Вернуться на главную</a>");  }
Собственно почему не грузится файл?
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Потому, что у тебя тут очень кривой код... Никакого редактирования я не вижу. Не вижу нормальной работы с сессиями, не вижу, что с переменными все в порядке. Php тоже не видит
 

TheRealKos

Новичок
c0dex, session_start() везде прописан (да и вывожу переменные чтобы убедится что все нормально)...редактирование информации ни как не связана с загрузкой файла (просто с него данные считаются, их можно подредактировать...). Может весь код показать? Но там много...
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Просто исходя из приведенного кода, он не должен работать, скобки лишние. Но использовать copy там, где надо использовать другую функцию, неверно. Вообще надо включить вывод ошибок и посмотреть, есть ли там что)

Но я не совсем понимаю последовательность вызовов у тебя
 

TheRealKos

Новичок
c0dex, Вывод ошибок включен на каждой странице и не на одной про ошибку ни слова. Скобки возможно привел лишние да, т.к. это только часть кода.
И почему copy использовать неверно? Раньше (когда ограничивалось только index.php и upload.php) все работало как нужно. Знаю есть еще move_uploaded_file, но и с ней ничего не получается
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
вывод ошибок как включал? Ты уверен, что файл, который ты хочешь скопировать, существует?
 

TheRealKos

Новичок
c0dex, error_reporting(E_ALL)
Ну массив такой идет:
Код:
Array
(
    [filename] => Array
        (
            [name] => файлик.docx
            [type] => application/octet-stream
            [tmp_name] => /tmp/phpvatNo2
            [error] => 0
            [size] => 20691
        )

)
 

TheRealKos

Новичок
c0dex, ох, а вот и ошибка...
Warning: copy(/tmp/phpvatNo2) [function.copy]: failed to open stream: No such file or directory. (Нет такого файла или каталога). А почему пишет что не удалось открыть файл или директория?
 
Последнее редактирование:

Absinthe

жожо

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Absinthe, никаких двойных стандартов, у автора непонимание пока, почему файл из темпа пропасть может, не мешай
 

hell0w0rd

Продвинутый новичок
Absinthe, я написал уже. chroot
PS а тебе это не нравится?
move_uploaded_file (on my setup) always makes files 0600 (rw- --- ---) and owned by the user running the webserver (owner AND group). Even though the directory has a sticky bit set to the group permissions! I couldn't find any settings to change this via php.ini or even using umask().
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Надо понять, что либо ты кладешь его ручками в какое-то временное хранилище, либо меняешь логику работы своего псевдоредактирования))
 

TheRealKos

Новичок
c0dex, на upload.php сделал copy($_FILES["filename"]["tmp_name"],"tmp/$file_translit")
А на upload_full.php сделал move_uploaded_file("tmp/.$file_translit","upload/".$_SESSION["group"]."/".$_SESSION["login"]."/$predmet/".$file_translit)
В папку tmp файл копируется, а вот далее по нужному пути не перемещается...
 

hell0w0rd

Продвинутый новичок
TheRealKos, гм. название функции как бы намекает, что она перемещает загруженный файл. Копировать ничего не надо, сразу перемещай
 
Сверху