Почему я не могу скачать файлы, загруженные с помощью PHP?

Я создал пользовательскую CMS с PHP, и она загружает файлы в каталог с правами доступа 777. Когда файлы загружаются, им присваивается 600, а apache является владельцем, поэтому я не могу загрузить их через FTP в качестве основного пользователя FTP.

У кого-нибудь есть идеи? Я попытался изменить разрешение, но у меня нет прав из-за того, что владельцем является apache.


person benpalmer    schedule 11.06.2011    source источник
comment
Не могли бы вы опубликовать соответствующий код загрузки?   -  person Chris Laplante    schedule 12.06.2011
comment
Попробуйте chmod и/или chown ваши файлы в скрипте загрузки.   -  person netcoder    schedule 12.06.2011
comment
Вы можете изменить права доступа к файлу при загрузке. Поскольку операция будет выполняться от имени пользователя apache, она будет разрешена.   -  person datasage    schedule 12.06.2011
comment
Вы можете установить липкий бит в самом каталоге, что заставит групповые разрешения применяться к новым файлам, созданным в нем. chmod g+s /your/upload/dir.   -  person Marc B    schedule 12.06.2011
comment
Спасибо, Марк Б, это сработало. Мой провайдер VPS не разрешает SSH, поэтому у меня были серьезные проблемы с настройкой разрешений. Одна маленькая строчка кода PHP решила проблему моей потерянной субботней ночи.   -  person benpalmer    schedule 12.06.2011
comment
Предпочитайте 1777 для временного каталога, это липкий бит, файлы будут принадлежать создателю файла, и пользователи могут только удалять/переименовывать свои собственные файлы. en.wikipedia.org/wiki/Sticky_bit   -  person regilero    schedule 12.06.2011


Ответы (2)


Вы не можете изменить файлы, но «apache» может: после загрузки и перемещения файла измените разрешения в том же сценарии. Поскольку он управляется apache, это разрешено.

http://php.net/manual/en/function.chmod.php

person Nanne    schedule 11.06.2011

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

Я бы взял ссылку, предоставленную Нэнн, и начал добавлять ее в ваш сценарий загрузки. Это гарантирует, что файлам будут предоставлены соответствующие разрешения для каждой ситуации, в которой они вам понадобятся.

person Termlimit    schedule 11.06.2011