Что происходит, так это то, что HTTP-сервером управляет пользователь с именем «никто», а ваш FTP-пользователь — другой. Когда происходит загрузка, HTTP-сервер создает файл под своим именем пользователя, и ваш FTP-пользователь не имеет права записывать (или удалять) эти файлы.
Самый простой способ исправить это (но не совсем безопасный) — добавить обоих пользователей в одну группу и изменить права доступа к файлам, чтобы разрешить пользователям одной и той же группы читать/записывать эти файлы.
Ваш администратор должен позаботиться об этом, но вам придется вызвать chmod(), чтобы изменить права доступа к вашим загруженным файлам.
Объясни лучше:
Права доступа к файлу linux/unix состоят из разрешений пользователя (u), группы (g) и других (o). Здесь я рассмотрю только 3 типа прав доступа к файлам: чтение (r), запись (w) и выполнение (x). Итак, у вас получится что-то вроде этого:
-rw-rw---x 1 jweyrich staff 12288 Oct 24 00:22 avatar.png
- Первый rw- это разрешение (чтение/запись) ПОЛЬЗОВАТЕЛЯ, которому принадлежит файл (jweyrich).
- Второй rw- это разрешение (чтение/запись) ГРУППЫ, которой принадлежит файл (персонал).
- --x в конце - это разрешения (выполнение) ДРУГИХ пользователей.
Ваши PHP-скрипты запускаются от имени пользователя «никто» (и, скажем, от группы «никто»), поэтому каждый файл, который вы создаете на своем PHP, будет принадлежать пользователю «никто» (и его группе). Пользователь может быть частью одной или нескольких групп.
Чтобы решить проблему с разрешениями, ваш FTP-пользователь и «никто» должны находиться в группе common, допустим, администратор поместил вашего пользователя в «никто». Когда они находятся в одной группе, ваш PHP-скрипт должен предоставить права «rw» (чтение/запись) членам группы «никто». Для этого:
chmod("path_to_your_file", 0770);
0770 эквивалентен "u+rwx,g+rwx,o-rwx", который я объясню здесь:
- u+rwx = для пользователя (владелец, то есть «никто»), дать права на чтение/запись/выполнение
- u+rwx = для группы (которая также "никто"), дать права на чтение/запись/выполнение
- o-rxw = для других удалить разрешения на чтение/запись/выполнение
После этого ваш FTP-пользователь, который теперь входит в группу «никто», будет иметь доступ на чтение//запись к загруженным файлам и, таким образом, также сможет удалять файлы. Это будет выглядеть так:
-rwxrwx--- 1 nobody nobody 12288 Oct 24 00:22 avatar.png
Это не идеальное введение в права доступа к файлам unix, но я надеюсь, что это поможет.
person
jweyrich
schedule
09.04.2010