Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы в загрузке файла на сервер
 
 автор: Я Чайник   (26.08.2010 в 00:06)   письмо автору
 
 

Привет всем! У меня тут возникли проблемы с загрузкой на сервер вот код подскажите в чем проблема? Не знаю почему но сразу выводить else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }


<?php

 
// Каталог, в который мы будем принимать файл:
                                               
$uploaddir 'media/';
                                               
$uploadfile $uploaddir.basename($_FILES['fupload']['name']);
                                               
$url $uploaddir.$_FILES['fupload']['name'];

                                               
// Копируем файл из каталога для временного хранения файлов:
                                               
if (copy($_FILES['fupload']['tmp_name'], $uploadfile))
                                               {
                                               
                                               
                                               
$result mysql_query("INSERT INTO media (title_ru,title_en,title_uz,url,korzina) VALUES ('$title_ru','$title_en', '$title_uz','$url','no')");
                                               
                                               if (
$result == true)
                                               {
                                                   echo 
"<tr><td><p class='green_title'>Медиафайл загружен!</p></td>
                       </tr>"
;
                                               }
                                               else
                                               {
                                                echo 
"<tr><td><p class='error_text'>Медиафайл не загружен из-за проблемы в коде!</p></td>
                       </tr>"
;   
                                               }                                               
                                               
                                               
                                               
                                               }
                                               else 
                                               { 
                                               echo 
"<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; 
                                               }

?>

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 00:13)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:06)
 

вместо copy() надо использовать move_uploaded_file(), Вы не делаете ни каких проверок, возможно из-за размера файла и происходит ошибка, проверте enctype формы, должен быть multipart/form/data

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 00:18)   письмо автору
 
   для: Slo_Nik   (26.08.2010 в 00:13)
 

У меня на форме стоить enctype='multipart/form-data' и файл я бросаю очень маленький 8кб :) ну новерно из-за copy() сейчас сделаю move_uploaded_file()

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 00:25)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:18)
 

скопировать то скрипт скопирует, но как написал serenya1983 проверьте сам массив $_FILES и имя файла вместе с путём $uploadfile = $uploaddir.basename($_FILES['fupload']['name']);

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 00:19)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:06)
 

для начала можно посмотреть, что есть в $_FILES?
так же могут возникнуть тут проблемы:
uploadfile = $uploaddir.basename($_FILES['fupload']['name']);
т.к., например, мой хостер не очень любит принимать файлы с русскими именами и разными символами в имени!
вместо copy использовать move_uploaded_file!

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 00:24)   письмо автору
 
   для: serenya1983   (26.08.2010 в 00:19)
 

Не знаю в чем проблема? Попробовал move_uploaded_file() все равно такая фигня! Да кстати у меня на локальном все нормально в хостинге проблемы!

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 00:26)   письмо автору
 
   для: serenya1983   (26.08.2010 в 00:19)
 

Попробовал загрузить файл без русский символов все равно не получаеться!

  Ответить  
 
 автор: mihdan   (26.08.2010 в 00:28)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:26)
 

<?php
print_r
($_FILES);
?>

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 00:30)   письмо автору
 
   для: mihdan   (26.08.2010 в 00:28)
 

И что это за код что он делаеть?

<?php 
print_r
($_FILES); 
?>

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 00:31)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:30)
 

как то, тоже с хостером были проблемы, он посоветовал прописать:
в .htaccess
SecFilterEngine Off
SecFilterScanPOST Off
у меня всё заработало!

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 00:34)   письмо автору
 
   для: serenya1983   (26.08.2010 в 00:31)
 

а где он находиться этот .htaccess в корневой эго нету

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 00:37)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:34)
 

если в конревой нету - создайте его! (в начале файла обязательно точка)

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 00:40)   письмо автору
 
   для: serenya1983   (26.08.2010 в 00:37)
 

:) а как создать-та эго?

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 00:43)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:40)
 

надеюсь вы пошутили с вопросом как создать файл!!!
В Windows правой кнопкой "создать"!
Во всяких коммандерах F4
и т.п.
создайте его у себя и закачайте на хостинг!
и как уже многие советовали посмотрети что в $_FILES есть.

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 00:56)   письмо автору
 
   для: serenya1983   (26.08.2010 в 00:43)
 

Проста если я эго создаю с помощью блокнот .htaccess становиться .htaccess.txt

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 00:58)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:56)
 

дак потом выйдите из блоконота и переименуйте файл убрав расширение!

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 01:03)   письмо автору
 
   для: serenya1983   (26.08.2010 в 00:58)
 

Я не могу это реализовать так как я не вижу .txt Windows не показывает у меня Я знал как это сделать в XP а вот в Windows 7 не знаю

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 01:23)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 01:03)
 

откройте блокнот, нажмите "сохранить как...", введите имя ".htaccess", а в поле "тип файла" выбирите "все файлы".

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 00:59)   письмо автору
 
   для: serenya1983   (26.08.2010 в 00:43)
 

Вот что выходить Array ( [fupload] => Array ( [name] => asd.jpg [type] => image/jpeg [tmp_name] => /tmp/phpXVihzp [error] => 0 [size] => 7546 ) )

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 01:02)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:59)
 

с $_FILES вроде всё нормально!

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 01:08)   письмо автору
 
   для: serenya1983   (26.08.2010 в 01:02)
 

вот архив в нём файл
http://92.255.66.35/1.rar

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 01:23)   письмо автору
 
   для: serenya1983   (26.08.2010 в 01:08)
 

Дааа все равно .htaccess скопировал в корен сайта и все равно не получаеться

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 01:23)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 01:23)
 

вопросы тогда к хостеру!!!

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 01:26)   письмо автору
 
   для: serenya1983   (26.08.2010 в 01:23)
 

ну скорее всего вы знаете этот хостинг я проста провераю сайт на бесплатном хостинге www.freewebhostingarea.com

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 01:33)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 01:26)
 

с бесплатными не знаком!
Но могу предположить что у них запрещён upload файлов!!!

  Ответить  
 
 автор: serenya1983   (26.08.2010 в 01:36)   письмо автору
 
   для: serenya1983   (26.08.2010 в 01:33)
 

посмотрите в phpinfo() разрешён ли upload.

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 01:39)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 01:26)
 

воспользуйтесь функцией phpinfo(); , создайте файл, например test.php впишите туда

<?php 
phpinfo
();
?>

загрузите на хост и запустите этот скриптик. Вам покажет таблицу с настройками хостинга, найдите там file_uploads и посмотрите значение, если off , то " упс"
А скорей всего Вам надо ещё раз проверить и перепроверить свой скрипт загрузки файла

p.s. скопировал Ваш код, запустил и мне сразу выдало Ошибка! Не удалось загрузить файл на сервер!, я ни чего и не делал.
Если у Вас продолжается такая фигня, то проверяйте свой код, выставляйте eror_reporting(E_ALL); и смотрите, что Вам будет говорить php.

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 01:48)   письмо автору
 
   для: Slo_Nik   (26.08.2010 в 01:39)
 

на хосте не показывает инфо а на локальном все супер

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 07:55)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 01:48)
 

что ж Вы внимательно не посмотрели на главной странице Вашего хостинга, там даже для удобства сделана ссылка, что бы не лепить файл с единственной функцией phpinfo() :):):)
Внимательно смотрите, на главной всё расписано, что есть и чего нет на хостинге. Если у Вас такое же знание английского, как и у меня, то есть "0", есть онлайн переводчики.
Значит повторюсь.
В Вашем скрипте(если в Вашей схеме не один файл, то в каждом) самой первой строчкой должно быть error_reporting(E_ALL);, вписываете, смотрите предупреждения/ошибки на локальном, всё исправляете, потом грузите на хостинг и пытаетесь запустить там скрипт. Права доступа на каталог, в который Вы будете грузить файлы выставьте 777, то есть полный доступ.
Для удобства, на локальном можно выводить в браузер все переменные, которые Вы формируете в процессе обработки Ваших файлов.

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 13:53)   письмо автору
 
   для: Slo_Nik   (26.08.2010 в 07:55)
 

Добрый день! file_uploads на хостинге стоит on

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 13:59)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 13:53)
 

а что со скриптом, проверили, перепроверили, идёт загрузка файла на сервер?

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 14:44)   письмо автору
 
   для: Slo_Nik   (26.08.2010 в 13:59)
 

Выходить вот такая фигня:

Warning: move_uploaded_file(media/Direktor.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/vhosts/college.freetzi.com/admin/add_media.php on line 143

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpkvXfWn' to 'media/Direktor.jpg' in /home/vhosts/college.freetzi.com/admin/add_media.php on line 143


143 строка:


 if (move_uploaded_file($_FILES['fupload']['tmp_name'], $uploadfile))
 {

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 14:48)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 14:44)
 

У Вас не достаточно прав для записи в указаный каталог, установите права на каталог 777(полный доступ), я уже Вам писал об этом, и будет Вам счастье.
Установить права доступа можно через total commander или панель управления Вашим хостингом

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 15:11)   письмо автору
 
   для: Slo_Nik   (26.08.2010 в 14:48)
 

А Как установить права на доступ можно както поконкретнее с Total Comandera. Помогите с этой задачи

  Ответить  
 
 автор: lElectroHardl   (26.08.2010 в 15:23)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 15:11)
 

Правой кнопкой на папку/файл -> файл -> изменить атрибуты -> 777 (666 - для файлов). Или просто правой кнопкой -> атрибуты.
Это вы поставили полный доступ к файлу/папке.

  Ответить  
 
 автор: lElectroHardl   (26.08.2010 в 14:49)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 14:44)
 

Мне кажется, или у вас указанной папке в скрипте не существует?

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 14:54)   письмо автору
 
   для: lElectroHardl   (26.08.2010 в 14:49)
 

Нет папка сушествуеть!

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 16:26)   письмо автору
 
   для: lElectroHardl   (26.08.2010 в 14:49)
 

Всё файл загружается но вот я хочу чтоб он загружал не в папку где находиться этот файл php а в корневую папку media сейчас объясню: у меня в корне сайта лежит папки admin, ru, en, media. И вот в папке admin валяться файл add_media.php он должен загружать файл не в папку admin а в папку который находиться в корне сайта media. Как это реализовать?

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 16:54)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 16:26)
 

измените пути к каталогу media в переменной $uploaddir относительно корня сайта так, как Вам надо.

  Ответить  
 
 автор: Я Чайник   (26.08.2010 в 23:21)   письмо автору
 
   для: Slo_Nik   (26.08.2010 в 16:54)
 

Я знаю что надо изменить в $uploaddir = 'media/'; но как задать путь чтобы не загружал в эту папку а в корневую сайта прочитайте мое предедушшие сообщение помогите очень надо а-то уже голова болит докончит надо админку сайта а вот знание не хватает

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 23:39)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 23:21)
 

[поправлено модератором]

  Ответить  
 
 автор: Я Чайник   (27.08.2010 в 16:19)   письмо автору
 
   для: Slo_Nik   (26.08.2010 в 23:39)
 

Большое спасибо всем!

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 01:04)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:59)
 

если на локальном грузит, а на хосте нет, то возможно проблема в правах на каталог, в который Вы грузите.
В самом начале скрипта выставьте уровень ошибок

<?php 
error_reporting
(E_ALL);
// тут продолжение Вашего скрипта
?>

  Ответить  
 
 автор: Slo_Nik   (26.08.2010 в 00:33)   письмо автору
 
   для: Я Чайник   (26.08.2010 в 00:30)
 

функция print_r() выводит всего лишь дамп массива $_FILES, а в этом массиве Вы увидите, что приходит из формы после отправки, все данные о файле. Обратите внимание на $_FILES['userfile']['error']

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования