Большинство ответов не совсем так или подробный .. Не забывайте, что safe_mode
проверяет, соответствует ли владелец SCRIPT владельцу файла, к которому вы хотите получить доступ. Это не имеет никакого отношения к группе httpd user: group.
Например, ваш httpd может работать как apache:daemon
, ваш скрипт принадлежит some_user:users
и файл, который вы хотите записать, в some_other_user:users
.
Если вы не активируете safe_mode_gid
, скрипт не сможет получить доступ к файлу, потому что пользователи не совпадают.
Это обычное явление, когда скрипт создает папку, а затем пытается создать файлы внутри этой папки.
Создание папки выполняется успешно, поскольку родительская папка принадлежит тому же пользователю, что и созданный ею скрипт (скорее всего, он был загружен «some_user»).
НО, созданная папка теперь принадлежит пользователю HTTPd, скажу apache:daemon
Если safe_mode
активен, вы не сможете создать файл в этой папке, так как владелец скрипта (some_user
) Безразлично 't соответствует владельцу папки (apache
).
Даже если вы активируете safe_mode_gid
, это не сработает, потому что группа сценариев является «пользователями», а группа папок - «демон».
Лучшим решением является установка одной и той же группы для пользователей ftp и httpd. Не забывайте, что вы также должны разрешать доступ к записи в группу в «записываемой» папке, и это менее безопасно, поскольку, поскольку все ваши пользователи находятся в одной группе, процесс httpd может обращаться к другим файлам пользователей с момента активации safe_mode_gid
.
Вы должны намереваться совместить safe_mode_gid
+ open_basedir
и установить домашний адрес пользователя как open_basedire
, чтобы избежать этого.
HTH