Загрузка фалов на сервер. На локал хосте все загружается. На сервере нет.

  • Автор темы Некто
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Некто

Guest
Загрузка фалов на сервер. На локал хосте все загружается. На сервере нет.

Код.

PHP:
function uploadimage($imgname){
error_reporting(E_ALL);

         $flnm=$_FILES["$imgname"]['tmp_name'];
         $arr=getimagesize($flnm);



                switch($arr[2]){

                    case '1':

                    $uploaddir = '../image/';
                    $rndname=date("y_m_d_G_i_s");
                    $uploadfile = $uploaddir.$rndname.'.gif';
                    break;

                    case '2':

                    $uploaddir = '../image/';
                    $rndname=date("y_m_d_G_i_s");
                    $uploadfile = $uploaddir.$rndname.'.jpg';
                    break;
                    }

echo($uploadfile);

if (($_FILES["$imgname"]['name'])<>''){
if (move_uploaded_file($_FILES["$imgname"]['tmp_name'], $uploadfile)) {
   echo "<font color=green>Загрузка файла прошла успешно.</font><br>\n";
} else {
   echo("<font color=red>Произошла ошибка!</font>\n");
}

echo 'Информация для отладки:';
print_r($_FILES);


$fn=str_replace('../','',$uploadfile);

}

return($fn);
}

Вот ошибки которые он выводит(основные):

Warning: move_uploaded_file(../image/05_09_05_13_47_53.jpg): failed to open stream: Permission denied in /usr/home/mystar/domains/mystar.ru/public_html/silsysgroup/admin/upload.php on line 32

Warning: move_uploaded_file(): Unable to move '/var/tmp/phpJmIa1w' to '../image/05_09_05_13_47_53.jpg' in /usr/home/mystar/domains/mystar.ru/public_html/silsysgroup/admin/upload.php on line 32
Произошла ошибка! Информация для отладки:Array ( [image] => Array ( [name] => geovision.jpg [type] => image/pjpeg [tmp_name] => /var/tmp/phpJmIa1w [error] => 0 [size] => 2576 ) )




Папки для загрузки есть. На локал хосте все работает. На сервере нет. GD включена(я проверял). Помогите, почему не загружаются?
 

kvf77

Red Devil
тебе написали ясным языком - у тебя нет прав для этого
 

Некто

Guest
Permission denied.

Надо поставить на папку другие права? 777?

-~{}~ 05.09.05 14:03:

да. надо. всем спасибо
 

Sky_Flex

Новичок
c 755 у меня вот не загружает на сервер файло... И как быть?(при 777 загружает)
 

alexhemp

Новичок
Это только в случае, если php использует CGI-интерфейс. Если же используется mod_php, то нужно давать права на запись для пользователя под которым работает Apache.

Иногда апач входит в ту группу, что и аккаунт под которым заливаются скрипты, иногда просто nobody.
 

alexhemp

Новичок
kvf77

Я ничего не путаю. Я объясняю на доступном языке, может из-за этого складывается подобное впечатление.

Привожу простой пример

аккаунт user, home-директория /home/user/
DOCUMENT_ROOT - /home/user/public_html/
Заливаем в /home/user/public_html/upload/

Случай 1:

PHP как CGI (для которого в умлочательной конфигурации Apche использован SUEXEC) - в этом случае скрипт стартует с UID = user
Тогда прав на директорию upload достаточно вообще 700 - т.е. владелец - читать-писать-просматривать, остальные ничего.

Случай 2:

PHP как mod_php - в этом случае скрипт стартует с UID = www (обычно httpd запускают либо под отдельным юзером/группой, либо просто под nobody/nogroup).
Предположим, что апач запущен под www/www

Тогда нужно
1. Включить user в группу www
2. Скрипт должен принадлежать группe www
3. Права на директорию нужно установить такие, чтобы юзер, под которым работает apache имел туда право на запись (и просмотр директории), т.е. как минимум 770.

Если же user не принадлежит той-же группе, что и юзер под которым стартует apache - единственный вариант поставить права для всех, т.е. 777.

я не говорю сейчас о безопасности, я говорю о минимальных правах, обеспечивающих запись в разных ситуациях.
 

kvf77

Red Devil
Нечто

гы - а я его кстати с тобой попутал пару раз - думаю, что это так качество твоих постов упало - забавно :)

alexhemp
не знаешь - не объясняй. все твое словоблудие сводится к тому, чтобы включить PHP и Apache в одну группу. Причем тут права на паки и файлы? Если PHP как модуль - то вообще у него права апача. Если как CGI - включи его с апачем в одну группу. Если у тебя появляется надобность ставить 777 - значит ты что-то делаешь неправильно.
 

msdev

Новичок
Автор оригинала: kvf77
не знаешь - не объясняй. все твое словоблудие сводится к тому, чтобы включить PHP и Apache в одну группу. Причем тут права на паки и файлы?
Ты прочитай внимательно, что написал alexhemp, и в чем он не прав?
Проблема в том что пользователь обычно по ftp заливает свой сайт, например, под логином vvputin.
php вместе с apache работает под uid www.
и каким образом php скрипт получит право писать в папку images, кроме 777, если vvputin не входит в группу www?
 

kvf77

Red Devil
msdev

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

что мешает, кстати, назначить нужную группу на закаченные файлы?
 

msdev

Новичок
да эта полностью административная проблема, а не php.
но решать ее приходиться довольно часто, не везде делают так как твой хостер.
а как сменить группу? вот из доки на php функцию chgrp:
Only the superuser may change the group of a file arbitrarily; other users may change the group of a file to any group of which that user is a member.
 

kvf77

Red Devil
msdev
ну что ты сам себе противоречишь? мы либо по FTP закачиваем либо нет. Если ты закачиваешь по FTP, то FTP клиентом и выставляй - PHP-то тут причем? А если ты закачивал скриптами, то все и так будет нормально.

-~{}~ 19.09.05 15:03:

gray

да что за хрень-то ты рассказываешь не пойму. ЧЕМ ТЫ ЗАКАЧИВАЕШЬ ФАЙЛЫ в конце концов объясни - потом учто ты стока уже версий выдвинул, что я просто теряюсь

я уже писал, при таком подходе тут вина не в правах на папку а в ГРУППАХ - ты понимаешь разницу между правами и группами?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху