Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > аплоад файла на удаленный сервер


Автор: infinityC 7.12.2009, 12:07
Господа, у меня проблема с закачкой файла на на сервер моего хостинг-провайдера.
Закачиваю файл следующим образом (как написано в учебнике):

Код

<form enctype="multipart/form-data" action="1.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>

Код

if(isset($_FILES['userfile']['name']))
{
    $file=$_FILES['userfile']['tmp_name'];
    echo 'Имя временного файла на сервере: '.$file.'<br>';
    
    if (!copy($file, '/fff.bak')) 
    {
    print ("Не могу скопировать $file...<br>\n");
    }    
}


Имя временного файла выводит, следовательно файл на сервер закачивается. А вот скопировать в корневую директорию уже не может. Что делать?
Я предполагаю, что нет прав доступа на запись в корень. Как это поправить? .htaccess?

Автор: Ипатьев 7.12.2009, 12:18
Разумеется, у пользовтеля веб-сервера нет прав на запись в корень диска. И не должно быть ни в коем случае.
Веб-сервер должен иметь право записывать только в свой домашний каталог

Автор: infinityC 7.12.2009, 12:35
Ну а если я создам папку, ну например /upload
как в нее разрешить запись файла?

Автор: Ипатьев 7.12.2009, 12:39
Вы не сможете создать папку на юникс системе в корне файловой системы, не имея прав root
А если бы даже и имели, то я крайне не советовал бы вам это делать.

Папку надо создавать в домашнем каталоге веб-сервера, а не в корне файловой системы

Автор: brother79 7.12.2009, 13:00
Цитата(infinityC @  7.12.2009,  12:35 Найти цитируемый пост)
Ну а если я создам папку, ну например /upload
как в нее разрешить запись файла? 


chmod -R 0777 /uploads 

Смотри команду chmod, если у тебя есть пользователь, у которого есть нужные права на эту папку - то ей можешь разрешить туда запись, но я бы посоветовал прислушаться к словам Ипатьго, и под закачку выделить папку upload где-то среди содержимого своего сайта, а не в корне системы, ну и наверно надо не 777 а немного ограничить, по этому поводу тут было куча рекомендаций..

Автор: infinityC 7.12.2009, 15:26
Я понимаю о чем вы говорите, но дело в том, что я сам не являюсь администратором сервера, я всего лишь веб-программист, который хочет сделать, чтобы на его сайт пользователь мог закачать фотографию.
Я понял в чем лоханулся изначально
Код

copy($file, '/fff.bak')

будет пытаться скопировать файл в корень файловой системы, а не в корень сайта
я исправил эту строку так
Код

copy($file, './mydir/fff.bak')

но от этого эффекта никакого, все равно не копирует.

Автор: bars80080 7.12.2009, 15:28
Цитата(infinityC @  7.12.2009,  11:07 Найти цитируемый пост)
    if (!copy($file, '/fff.bak')) 

Код

if(!move_uploaded_file($file, $_SERVER['DOCUMENT_ROOT'].'/upload/fff.bak'))

Автор: Ипатьев 7.12.2009, 15:30
если происходят проблемы при обращении к файлам,
то надо узнать, правильно ли указан путь и есть ли необходимые права

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

Автор: brother79 8.12.2009, 06:34
Цитата(infinityC @  7.12.2009,  15:26 Найти цитируемый пост)
Я понимаю о чем вы говорите, но дело в том, что я сам не являюсь администратором сервера, я всего лишь веб-программист, который хочет сделать, чтобы на его сайт пользователь мог закачать фотографию.
Я понял в чем лоханулся изначально



Тебе же писали, надо дать права. Если у тебя хостинг - то у тебя есть 2 вар-та
1) зайти по ssh и выставить права
2) зайти через web - панель администратора и там должна быть возможность дать права на каталог, но только как ты уже понял, не на корень, а на каталог в твоём сайте. На твои каталоги - у тебя должны быть права.

Автор: Date 8.12.2009, 18:09
выдается ли сообщение "Не могу скопировать"???

выдает ли ошибку PHP? 


попробовал ли вариант который предложил bars80080. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)