Проблема с закачкой файлов на сервер

ayrat9

Новичок
Проблема с закачкой файлов на сервер

Собственно проблема даже не в самой закачке, а видимо в том, что закачанный файл не удается поместить в нужную директорию под требуемым именем. Результатом выполнения скрипта по закачке файла (изображения) становится следю строка:

[error]

Warning: copy(): open_basedir restriction in effect. File(/tmp/phpkthuei) is not within the allowed path(s): (/usr/lib/php:/var/www/html/webcp/users/8107619320) in /var/www/html/webcp/users/8107619320/www/web/req/in_team.class on line 552

[/error]

Класс in_team содержит след. функцию (призвана обрабатывать процесс закачки):

PHP:
function in_team_add_photo()
{
 if ($this->in_team_image=="") {return(52);}
 if ($this->in_team_image_size==0) {return(43);}  
 if (($this->in_team_image_type!="image/jpeg") && ($this->in_team_image_type!="image/jpg") && ($this->in_team_image_type!="image/pjpeg") && ($this->in_team_image_type!="image/png") && ($this->in_team_image_type!="image/x-png")) {return(44);}
 if (!is_uploaded_file($this->in_team_image)) {return(45);}
 $upfile=$this->PATH_WWW_PIC."/team/".$this->in_team_add_image_id."/".$this->in_team_image_name;
 if (!copy($this->in_team_image, $upfile)) {return(46);}
 return(0);
}
причем 552 строкой является как раз предпоследняя: if(!copy...)
Эта ф-ция успешно работала на хостинге mtw.ru, но я в связи с некотороыми обстоятельствами хостера пришлось сменить. Не пойму в чем проблема.
 

ayrat9

Новичок
Спасибо, попробую разобраться с open_basedir. Хотелось только узнать, можно ли самому узнать какая версия РНР стоит на серваке и какой режим включен (включен ли safemode), не прибегая к помощи службы техподдержки?
 

alpine

Новичок
ayrat9
[m]phpinfo[/m]
Хотя я где-то уже на этом форуме читал что могут отключать ... но все равно попробуй.
 

ayrat9

Новичок
Originally posted by TuBu
http://www.php.net/move_uploaded_file
Попробовал использовать эту ф-цию:

Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 552 is not allowed to access /var/www/html/webcp/users/8107619320/www/web/pic/team/5 owned by uid 96 in /var/www/html/webcp/users/8107619320/www/web/req/in_team.class on line 552

Причем заведомо знал, что uid будет разный. Но все равно спасибо.
 

ayrat9

Новичок
Какой-там... скорее ламер. Но мне показалось из прочитанного в рнр-описании ф-ции move_uploaded_file(), что у скрипта и у закачиваемого файла, в моем случае, будут разные uid. А можно ли узнать как-нибудь на каком серваке мой сайт висит (не я хостера выбирал, у меня только фтп-настройки)?
 

ayrat9

Новичок
спасибо

-~{}~ 02.08.04 22:27:

Просмотрел инфу про open_basedir - все варианты решения там таковы, что придется либо корректировать php.ini, либо отключать safe_mode. Я конечно отослал службе техподдержки письмо с описанием проблемы, но ответа нет. А что если они откажутся править конфигурационные файлы? Есть ли другое решение? Кстати мой хостер это www.elsite.ru, а программное обеспечение у него след.:

Apache/1.3.31 (ALT Linux/alt2) PHP/4.3.7RC2-dev/ALT mod_throttle/3.1.2 mod_watch/3.17

Кстати еще один баг всплыл, я не могу в /www/web папку кинуть .htaccess. Может ли хостер запретить это делать, или я намудрил чего-нибудь?

-~{}~ 08.08.04 10:09:

ПРоблема оказалось в следующем: в моей системе управления сайтом, при создании новой галереи, новости, таблицы.. и т.д., АВТОМАТИЧЕСКИ классом генерится каталог, в который в дальнейшем происходит закачка изображения. Так вот эта автоматика присваивает каталогу uid/gid "apache/apache". А закачка туда изображений осуществляется в дальнейшем с помощью скрипта add_photo.php, у которого uid/gid "user_25/group_2". И поскольку у хостера включен safe_mode режим происходят постоянно проверки и мне отказывается в осуществлении закачки файлов:

Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 552 is not allowed to access
/var/www/html/webcp/users/8107619320/www/web/pic/team/5 owned by uid 96 in
/var/www/html/webcp/users/8107619320/www/web/req/in_team.class on line 552

Можно ли изменив код решить проблему? Вот только ф-циями chown() и chgrp() нельзя воспользоваться (я уже пробовал) - только с правами ROOT это разрешено на серваке.

Может быть правка php.ini поможет?
Включив опцию safe_mode_gid. Или разрешив каталогу, в который закачиваются файлы,
(/www/web/pic/) не проводить
проверки UID/GID в опции safe_mode_include_dir. Если это так, то как правильно сконфигурировать эти опции?
 

fixxxer

К.О.
Партнер клуба
Ищи тему про безопасную настройку хостинга, там я писал, как справиться с проблемой разных uid при использовании apache+modphp. Это если тф сам настраивал. А если такое настроил хостер, беги скорее нафиг подальше от этого идиота.
 

Фанат

oncle terrible
Команда форума
iliah
ответ НЕПРАВИЛЬНЫЙ
правильный ответ - phpinfo();
 

ayrat9

Новичок
to fixxxer:
________

Очень бы хотелось прочесть, но где именно найти эту статью? Я облазил форум, но нашел по теме только

> Все о хостинге на PHP + Colocation + настройка Apache > Shared Hosting Security

Очень конечно интересно, но я новичок, и понятно не более 40% из этого топика. Хочется посмотреть именно про конфигурирование safe_mode опций.
Настроить php.ini мне хостер не даст, но может договориться с ним удастся.
И еще, где про роль umask на сервере прочесть можно? Большой спасиб.
 

fixxxer

К.О.
Партнер клуба
Да, в этой теме я, кажется, и упоминал об этом.
Расписывать все еще раз влом (ибо это долго).

-~{}~ 08.08.04 14:44:

Впрочем, если у тебя нет root-доступа, тебе эта информация не поможет. Максимум, что ты сможешь сделать в этом случае, аргументированно доказать своему хостеру, что он осёл. ;)
 

ayrat9

Новичок
Может я вопросы неправильно ставлю...
Кто-нить может объяснить человеческим языком (на русском), для чего нужны опции
"safe_mode_gid" и "safe_mode_include_dir"? Какие режимы (или пути) в
них можно/нужно ставить?
 

ayrat9

Новичок
Домылился со своим хостером до того, что моему аккаунту safe_mode отключили. Хотя мне все еще кажется, что этого можно было избежать
 
Сверху