ошибка при работе с move_uploaded_file()

anfanger

Новичок
ошибка при работе с move_uploaded_file()

Взял хостинг у нового провайдера. Проверенный на других хостингах скрипт загрузки файлов отказывается работать. Выдается ошибка:


Warning: move_uploaded_file(/uploads/upfile.doc) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/siteru/public_html/php/scrypt.php on line 169

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpSrTynr' to '/uploads/upfile.doc' in /home/siteru/public_html/php/scrypt.php on line 169

Из сообщения видно, что файл нормально грузится на сервер, но из временной папки в выделенную под загрузку папку /uploads/ не перемещается. Папка находится в корневом каталоге, там же где и /tmp/

Саппорт посоветовал выставить доступ на /uploads/ 777. Сделал. Результат - 0.
Потом он посоветовал перемещенный файл также сохранять в /tmp/, а не в /uploads/. Попробовал. Сообщение об ошибке пропало, но в /tmp/ файла нет. Насколько я помню move_uploaded_file() за собой во временной папке подтирает.
Ради смеха попробовал использовать под загрузку все папки, которые мне хостер дал в корне по умолчанию. Функция их не видит ни одной, кроме /etc, по отношению к которой выдается ошибка, что доступ закрыт.

Кстати, аналогичная ситуация и с функцией copy().

Код:

PHP:
// помещаем файл туда, куда нужно
            $upfile = '/uploads/' .$_FILES['attach_file']['name'];

            if ($_FILES['attach_file']['tmp_name'])
            {
              if (!move_uploaded_file($_FILES['attach_file']['tmp_name'], $upfile))
              {
                echo "<div align='center'>Проблема: невозможно переместить файл в каталог назначения";
                require ('bottom.inc');
                exit;
              }
            }
Помогите разобраться, пожалуйста!
 

weregod

unserializer
напишите примитивный скрипт, воспроизводящий ошибку и потребуйте его работоспособности у хостера
 

Ярослав

Новичок
$upfile = '/uploads/' .$_FILES['attach_file']['name'];
Что то я очень сомневаюсь что папка "uploads" есть в "/"
Используй полный путь, например в index.php
define('ROOT_DIR', dirname(__FILE__));

и потом у себя в скрипте:
$upfile = ROOT_DIR . '/uploads/' .$_FILES['attach_file']['name'];
 

anfanger

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

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
что в $_FILES['......']['error']
?

-~{}~ 05.09.10 21:30:

2. www.phpfaq.ru/debug
 

Mr_Max

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

-~{}~ 05.09.10 21:46:

укажи директорию относительно веб сервера и будет тебе счастье
 

anfanger

Новичок
Да если бы! Относительный путь использовался с самого начала. Потом делались попытки прописать полный путь в явном виде.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
хорошо.
давай по-другому
Документ-рут сайта какой?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ну и как тогда у тебя должна выглядеть переменная upfile?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
хорошо. В браузер что-нибудь выводится?
 

anfanger

Новичок
В браузере выводится:


Warning: move_uploaded_file(/uploads/upfile.doc) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/siteru/public_html/php/scrypt.php on line 169

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpSrTynr' to '/uploads/upfile.doc' in /home/siteru/public_html/php/scrypt.php on line 169

На var_dump(is_writable('/home/username/public_html/uploads/'));

выдает bool(false)
 

Ярослав

Новичок
Автор оригинала: anfanger
На var_dump(is_writable('/home/username/public_html/uploads/'));

выдает bool(false)
Думаю понятно куда копать? Проверяем еще раз права на хостинге ;)
PS. Надеюсь вместо "username" подставляли реальное имя которое используеться?
 

anfanger

Новичок
Прошу прощения, протупил по невнимательности. Конечно, не подставил реальное имя. С реальным именем выдает bool(true)

-~{}~ 05.09.10 23:52:

папка /uploads/ есть и так /home/username/public_html/uploads/,
и так /home/username/uploads/
Не работает ни на одну, ни на другую.
 

Mr_Max

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