Файл закачивается через скрипт. Право доступа у файла устанавливаются в 600

Aurum Stokd

Новичок
Файл закачивается через скрипт. Право доступа у файла устанавливаются в 600

Картинки закачиваются через скрипт и в папке /files/, появляются файлы с правами дспупа - 600. Из-за этого, из браузера не могу обратится к картинке(прим. <img src="" />). Что делать? Можно ли как-то выставить нужные(755) права доступа к файлам из ПХП?
P.S: искал, но, по-видимому, в моей формулировке проблема редка.

Для перемещения в нужный каталог использую:
PHP:
move_uploaded_file($img, 'files/'.$img_name);
 

Aurum Stokd

Новичок
Большое спасибо! Кстати, это из-за особых настроек сервера файлы так закачиваются, или всегда так?
 

Lancerrr

Новичок
Очень похожая ситуация и у меня. :(
Механизм закачки файлов такой же.

Вчера сделал скрипт, который графические файлы пользователей форума забрасывает через форму в определенный каталог на сервере (для каждого пользователя скриптом создается свой каталог, название которого берется из БД таблицы пользователей форума и равно $USER_ID). После закачки юзером каждой картинки появляется список ссылок всех закачанных им картинок.

Проверил вчера от имени нескольких пользователей - все работает, при нажатии на ссылку мы видим страницу с этой картинкой.

А вот сегодня вернулся я к этому скрипту, причем ничего в нем не менял, закинул с помощью его очередную картинку на сервер, кликаю ее по ссылке - а мне ошибка 403! Доступа нет, а почему??
Иду я в этот каталог и вижу, что мой сегодняшний файл имеет права доступа или CHMOD 600 (rw - - ), а вчерашние имели права 644 (rw r r). Вчерашние файлы соответственно открываются по ссылкам, а сегодняшние - нет (ошибка 403). Руками поменял CHMOD у сегодняшнего файла на 644 - он стал загружаться по ссылке. Загружаю через форму новую картинку - опять CHMOD 600. :(

Из-за чего вдруг сам по себе сегодня изменился CHMOD? Можно ли его как-то задавать принудительно ? Не хостер ли это забеспокоился и перепрограммировал сервер? До этого я никаких файлов через формы на сайт не грузил.
Каталоги создаются командой mkdir("имя_каталога"), может надо после имени еще разрешения дописать?
Что делать?

Заранее спасибо за любую инфу.
 

dimagolov

Новичок
Lancerrr, а кто же оказывается владельцем файла при этом? потому как понять не могу, если файл создавался apache, потому переносился php (как модулем apache), то с какой радости apache не может его достать?
 

Lancerrr

Новичок
dimagolov, простите за глупый вопрос... а как это увидеть? Я начинающий любитель-самоучка ...

у меня FTP-клиент CUTE-FTP (Global Scape), так вот я захожу через него на сервер и смотрю там chmod в свойствах файла.
В этих же свойствах в поле user прописано имя , с которым я вхожу в FTP.

Попробовал закинуть эту форму и этот скрипт-обработчик на свой другой сайт (но правда у этого же хостера). Резкультат тот же - chmod закинутого файла 600 :(

ВЕБ-сервером Апач я не пользуюсь, тестирую свои скрипты прямо на хосте.

Что посоветуете?
 

dimagolov

Новичок
Lancerrr, все зависит от того, из-под кого пускается apache для вас. чтобы это узнать сделай скрипт <?php phpinfo(); ?> и смотришь в разделе apache2handler строчку User/Group (у меня, к примеру, там www(80)/80, если у тебя там не твой логин, то это повод для беспокойства и размышлений.
в общем, что у тебя там?

-~{}~ 05.09.08 16:27:

ВЕБ-сервером Апач я не пользуюсь
это вот вряд ли :)
http://phpfaq.ru/na_tanke
 

Lancerrr

Новичок
dimagolov
смешно сказать, но нету у меня дословно такого раздела :(
Я все это РНР-info себе в Ворд скопировал и через сервис "НАЙТИ" пытался найти сперва User/Group (ни разу не нашелся), потом USER (нашелся много раз, но все мимо), потом этот раздел apache2handler (ни разу не нашелся).

PHP Version 4.4.4-9+lenny1

где еще посмотреть?

Насчет неиспользования ВЕБ-сервера Апач - мда, это я погорячился, хотел сказать, что localhost-ом не пользуюсь. :)
В смысле, на домашнем компе Апач не установлен, потому как нет проблемы все тестить сразу на реальном хосте.
 

dimagolov

Новичок
Lancerrr, лучше дай ссылку на скрипт с phpinfo, раз найти такое не можешь. броузеры, кстати, тоже давно контекстный поиск по странице делать умеют :)

где такого хостера нашел крутого? у которого не только умершая ветка php (4), но и версия 6-я до актуальной (4.4.4 а не 4.4.9)?
 

Lancerrr

Новичок
здесь оно:
http://www.ginecolog.by/proba.php

в остальном к хостеру пока претнзий не было, а РНР 5 там тоже есть, только не нужно оно мне пока :)

И еще.
Можно ли какой-то командой ПХП заранее принудительно изменить chmod загружаемого файла?
И можно ли какой-то командой ПХП при считывании файлов из каталога узнать их chmod ?

Заранее спасибо.
 

phprus

Moderator
Команда форума
Lancerrr
Сменить chmod можно функцией [m]chmod[/m].
Посмотреть chmod можно функцией [m]fileperms[/m]
 

dimagolov

Новичок
Lancerrr, ну да, PHP пускается как CGI модуль. И судя по всему он пускается вот так: http://httpd.apache.org/docs/2.2/suexec.html, то есть с особыми правами, при том, что для всех пользователей apache один. То есть для доступа к файлам через статику надо менять группу на www (в общем на ту, из под которой пущен apache, если она отличается) и ставить права 640
 

dimagolov

Новичок
ну... можно и так. но зачем всем юзерам хостинга давать возможность читать твою статику незаметно для тебя? пусть по http тягают, в логах будешь видеть кто это. ну а для скриптов 600 самое оно, раз пых как CGI под нужным юзером пускается. хотя согласен, это на грани паранои :)
 

phprus

Moderator
Команда форума
dimagolov
А разве группу может поменять еще и владелец файла, а не только root?
Мне моя SuSE дает изменить группу только на те, в которых я состою.
 

dimagolov

Новичок
phprus, точно. эначит я прогнал. значит никакой разницы давать права группе или всем и нету, так как если сможем поменять группу, то членами этой группы будут, грубо говоря, те же, кто и все.
chmod 604
 

Lancerrr

Новичок
Автор оригинала: phprus
Lancerrr
Сменить chmod можно функцией [m]chmod[/m].
Так что получается, можно с помощью этой команды в том же скрипте, который загружает файл, сразу и chmod выставить необходимый в обход настроек хостера? Или это нереально будет?

-~{}~ 08.09.08 20:30:

Автор оригинала: dimagolov
Lancerrr, ну да, PHP пускается как CGI модуль. И судя по всему он пускается вот так: http://httpd.apache.org/docs/2.2/suexec.html, то есть с особыми правами, при том, что для всех пользователей apache один. То есть для доступа к файлам через статику надо менять группу на www (в общем на ту, из под которой пущен apache, если она отличается) и ставить права 640
Мда, кое-что из того, что Вы сказали для меня немного абстрактно, к сожалению :(

Вопрос остается - мне хостера долбать и просить, чтоб настройки изменил или командой chmod я могу и сам это отрегулировать?
 
Сверху