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

Форум PHP

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

 

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

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

тема: Загрузка файла на сервер
 
 автор: Хулиган   (13.05.2009 в 10:34)   письмо автору
 
 

Добрый день.

Не удается загрузить файл на сервер.

 else if ($_POST['action'] == "add"){
    $hiperlink = "";
    $docfile = "";
    if ( isset($_FILES['docfile']['name']) ){
        $docfile = "docs/";
        $docfile .= $_FILES['docfile']['name'];
        if (is_uploaded_file($_FILES['docfile']['tmp_name'])) {
            move_uploaded_file ( $_FILES['docfile']['tmp_name'], $docfile );
            $hiperlink = "<br><a href=http://sub.domain.ru/docs/";
            $hiperlink .=$_FILES['docfile']['name'];
            $hiperlink .=" >подробнее...</a>";
        }                      
    }
}


Файл не загружается в указанную папку. Никаких сообщений не выводится.

На локальном хосте всё работает.

В чем может быть проблема?
Спасибо.

  Ответить  
 
 автор: DJ Paltus   (13.05.2009 в 10:43)   письмо автору
 
   для: Хулиган   (13.05.2009 в 10:34)
 

Разрешение на папку. 755.

  Ответить  
 
 автор: Хулиган   (13.05.2009 в 11:19)   письмо автору
 
   для: DJ Paltus   (13.05.2009 в 10:43)
 

Пробовал. И 755, и 777 - всё без толку.
Прбовал и относительные пути, и абсолютные

  Ответить  
 
 автор: DJ Paltus   (13.05.2009 в 12:14)   письмо автору
 
   для: Хулиган   (13.05.2009 в 11:19)
 

Может, во временную папку не пишется?

  Ответить  
 
 автор: Хулиган   (13.05.2009 в 12:50)   письмо автору
 
   для: DJ Paltus   (13.05.2009 в 12:14)
 

через временную папку проходит, т.к. если бы не проходил, то не формировалась бы ссылка на файл (условие if (is_uploaded_file($_FILES['docfile']['tmp_name'])) не выполнялось бы).
А т.к. ссылка формируется, значит аплод во временную папку проходит, а перенос по указанному пути - нет.

  Ответить  
 
 автор: DJ Paltus   (13.05.2009 в 14:28)   письмо автору
 
   для: Хулиган   (13.05.2009 в 12:50)
 

А move_uploaded_file что возвращает? фолс, трю?

  Ответить  
 
 автор: ronin   (13.05.2009 в 17:39)   письмо автору
 
   для: DJ Paltus   (13.05.2009 в 14:28)
 

может быть ограничение на размер файла.

  Ответить  
 
 автор: Хулиган   (14.05.2009 в 18:25)   письмо автору
 
   для: DJ Paltus   (13.05.2009 в 14:28)
 

move_uploaded_file возвращает false.
Иначе файл лежал бы там, куда я его направляю.

Во временную папку файл загружается, вот вывод от
echo 'Размер файла ' . $_FILES['docfile']['tmp_name'] . ': ' . filesize($_FILES['docfile']['tmp_name']) . ' байтов';

Размер файла /var/spool/sessions/442/21/phpwU3seK: 214 байтов

Тип файла вполне допустимый: txt.

Вывода об ошибках нет, при том, что сделал error_reporting (E_ALL);

  Ответить  
 
 автор: ronin   (14.05.2009 в 19:21)   письмо автору
 
   для: Хулиган   (14.05.2009 в 18:25)
 

а методом втыка: каждый if закрывать else {echo "oblom1";} else {echo "oblom2";} else {echo "oblom3";}

  Ответить  
 
 автор: Хулиган   (14.05.2009 в 19:38)   письмо автору
 
   для: ronin   (14.05.2009 в 19:21)
 

останавливается на стадии move_uploaded_file.
Файл загружается во временную папку, но не перемещается по указанному пути.

  Ответить  
 
 автор: DJ Paltus   (14.05.2009 в 20:56)   письмо автору
 
   для: Хулиган   (14.05.2009 в 19:38)
 

Доступ к логам есть? Про рестрикшн не пишет ничего?
Прямой доступ по SSH или FTP к директории /tmp есть?
Попробуй мув_аплодед_файл прямо непосредственно в нее и погляди, чо скажет.
В плане маразма, может, имя файла не генерируется почему-то? Пусть напишет, когда сформирует.

  Ответить  
 
 автор: Хулиган   (15.05.2009 в 02:28)   письмо автору
 
   для: DJ Paltus   (14.05.2009 в 20:56)
 

Проблема прояснилась.
Загрузить файл удается, но только в текущую директорию. Т.е. в ту папку, в которой находится скрипт.
В остальные папки - никак. Что бы не указывал - и полный путь, и относительный - не загружается и всё тут.
Т.е. move_uploaded_file ( "tmp_name", "name") работает, а move_uploaded_file ( "tmp_name", "docs/"."name") - нет.

В общем, плюнул на всё, и решил перетаскивать файл после аплода вручную из текущей папки в нужную мне папку при помощи copy+delete.

  Ответить  
 
 автор: Николай2357   (15.05.2009 в 07:05)   письмо автору
 
   для: Хулиган   (15.05.2009 в 02:28)
 

А директория, в которую грузятся файлы, находится в той же директории, в которой скрипт?
Вообще то если не пишет, должен нотис быть. В логах пусто? У меня Ваш скрипт чудесно работает.

  Ответить  
 
 автор: DJ Paltus   (15.05.2009 в 09:58)   письмо автору
 
   для: Хулиган   (15.05.2009 в 02:28)
 

я вот чо еще подумал.
если работаешь в домене 3 уровня, может произойти путаница с путями, как начнет считать от корня или от 2-го уровня, так и не найдет директорию.
Наделай директорий docs везде, а потом посмотри, вдруг, в одну из них таки скопирует )))

  Ответить  
 
 автор: Хулиган   (15.05.2009 в 11:39)   письмо автору
 
   для: DJ Paltus   (15.05.2009 в 09:58)
 

С путями всё нормально. И скрипт и папка docs находятся в одной папке. Для copy я ведь те же пути указываю, что и для mov_uploaded_file.
Папок docs понаделал тучу, думал где-нибудь отловлю этот файл - ничего.

В общем пока так и оставил, с копированием.

  Ответить  
 
 автор: vml   (15.05.2009 в 13:56)   письмо автору
 
   для: Хулиган   (15.05.2009 в 11:39)
 

Возможно проблема в относительных путях самого скрипта. У меня такое было, когда скрипт лежит в одной папке, а вызываю я его методы из другой дирректории. Попробуйте создать папку 'docs' в той директории, откуда запускаете скрипт.

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

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