Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Загрузка файлов на локальном сервере
Форумы портала PHP.SU » » Вопросы новичков » Загрузка файлов на локальном сервере

Страниц (1): [1]
 

1. kisil-mike - 08 Ноября, 2012 - 20:55:34 - перейти к сообщению
Проблема:
Изучаю PHP, почему-то не загружаются файлы на локальный сервер через форму.
Ошибок нет, все проходит как должно быть, но *.tmp файла в нужном месте не появляется, отсюда, как я понимаю, и ошибка. Но is_uploaded_file никаких ошибок не выдает.
Помогите, перепробовал все, что нашел в интернете, тщетно.
Настройки PHP:
upload_max_filesize = 2mb, загружаю картинки/текстовики <100кб
post_max_size = 8mb
file_uploads = on
Какие еще проверить?
Поиск tmp делал на всех дисках, ничего не нашлось.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if($_SERVER["REQUEST_METHOD"]=="POST"){
  4.     //проверка на ошибки при загрузке (все успешно)
  5.     if(is_uploaded_file($_FILES['file']['tmp_name'])){
  6.         $t = $_FILES['file']['tmp_name'];
  7.         $n = $_FILES['file']['name'];
  8.         //"переименовываем" файл
  9.         if(move_uploaded_file($t, $n))
  10.             $result = 'Все прошло успешно';
  11.         else
  12.             $result = 'move_uploaded_file не сработал';
  13.     }else{
  14.         $error = 'Ошибка';
  15.     }
  16. }
  17. ?>
  18. <!DOCTYPE HTML>
  19. <html>
  20. <body>
  21. <!-- форма загрузки -->
  22. <form action="<?=$_SERVER["PHP_SELF"]?>"  enctype="multipart/form-data" method="POST">
  23.         <input type="file" name="file" >
  24.         <input type="submit" value="Загрузить">
  25. </form>
  26. <?
  27. //Вывод значений:
  28. if($_SERVER["REQUEST_METHOD"]=="POST"){
  29.     echo '<pre>';
  30.     //в массиве ошибок так же нет
  31.     print_r($_FILES);
  32.     echo '</pre>';
  33.     echo '<h3>$t = ' . $t . '</h3>';
  34.     echo '<h3>' . $error . '</h3>';
  35.     echo '<h3>$n = ' . $n . '</h3>';
  36.     echo '<h3>$result = ' . $result . '</h3>';
  37. }
  38. ?>
  39. </body>
  40. </html>
  41.  

Вывод в браузере:

Огорчение
Проверил на виртуалке - аналогичная ситуация. Т.е. я что-то не так делаю, но вот что...
2. pettson - 08 Ноября, 2012 - 21:15:31 - перейти к сообщению
Попробуйте в move_uploaded_file() прописать полный путь к перемещаемому файлу.
3. kisil-mike - 08 Ноября, 2012 - 21:25:18 - перейти к сообщению
pettson пишет:
Попробуйте в move_uploaded_file() прописать полный путь к перемещаемому файлу.

Обалдеть. Но почему сработало? Улыбка Т.е. нужно обязательно указывать директорию?
Потратил пол дня, а до этого не додумался Недовольство, огорчение Прям аж обидно как-то...
Большое спасибо!
(Добавление)
Все же прошу пояснить.
1. tmp файл, где он? Он же должен отображаться в папке? Я убираю функцию move_uploaded_file, но файла все равно нет в папке tmp.
2. Мануал пишет:
Цитата:
Если filename не является загруженным файлом, никаких действий не предпринимается и move_uploaded_file() возвращает FALSE.
Если filename является загруженным файлом, но не может быть перемещён по каким-либо причинам, никаких действий не предпринимается и move_uploaded_file() возвращает FALSE. Кроме того, отображается предупреждение.

А на деле false не возвращается. Но ведь по Факту функция move_uploaded_file не отрабатывает(если не указывать полную директорию, а указать лишь имя файла), так?
4. snikers987 - 08 Ноября, 2012 - 23:09:06 - перейти к сообщению
kisil-mike После завершения работы скрипта, все временные файлы удаляются.
5. kisil-mike - 08 Ноября, 2012 - 23:26:09 - перейти к сообщению
snikers987, спасибо.
6. Мелкий - 09 Ноября, 2012 - 08:34:42 - перейти к сообщению
kisil-mike пишет:
А на деле false не возвращается.

Значит файл перемещается. Осталось только найти, куда именно Закатив глазки

kisil-mike пишет:
1. tmp файл, где он?

http://nl3.php.net/manual/en/ini...i.upload-tmp-dir
Существует файл, как уже сказано, только во время между передачей файла и завершением работы скрипта.
7. kisil-mike - 09 Ноября, 2012 - 15:46:20 - перейти к сообщению
Мелкий пишет:
Значит файл перемещается. Осталось только найти, куда именно

Вот только поиск в винде на всех дисках результата не дал. Поэтому я и подумал, что проблема в tmp файле.

 

Powered by ExBB FM 1.0 RC1