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