Согласно Документы по безопасному режиму PHP на safe_mode_gid:
By default, Safe Mode does a UID compare check when opening files. If you want to relax this to a GID compare, then turn on safe_mode_gid. Whether to use UID (FALSE) or GID (TRUE) checking upon file access.
В чем разница между проверкой UID (идентификатора пользователя) и проверкой GID (идентификатора группы) для сценария PHP, работающего на веб-сервере?






Проверка UID в безопасном режиме используется для предотвращения доступа пользователей к файлам других людей. GID используется для предотвращения доступа ГРУППЫ пользователей к другим файлам ГРУПП.
Это просто даст вам немного больше гибкости в настройке вашего веб-сервера. Используя safe_mode_gid, вы должны иметь возможность запускать отдельные процессы PHP / httpd для каждого пользователя в вашей системе, но дать каждому процессу возможность читать некоторые общие файлы, если все они выполняются как одна и та же группа (GID) и общие файлы. принадлежат этой группе.
Например, имя пользователя и группа веб-сервера - apache: www,
если вы установите для проверки UID, процесс php будет иметь доступ только к любому файлу, принадлежащему пользователю апач. Поэтому, если у вас есть другой веб-сервер, работающий в вашей системе, например tomcat с именем пользователя и группой кот: www, любые файлы, созданные процессом tomcat, не будут доступны для php, потому что он принадлежит пользователю Кот.
Но если вы вместо этого используете проверку GID, файлы, созданные процессом tomcat, будут доступны для чтения процессом php, потому что они принадлежат той же группе www
Большинство ответов не совсем верны или подробны ... Не забывайте, что 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) не совпадает с владельцем папки (apache).
Даже если вы активируете safe_mode_gid, это не сработает, потому что группа сценариев - это «пользователи», а группа папок - «демон».
Лучшее решение - установить одну и ту же группу для пользователей ftp и httpd.
Не забывайте, что вам необходимо разрешить доступ для записи группе в «доступной для записи» папке, и это менее безопасно, потому что, поскольку все ваши пользователи находятся в одной группе, процесс httpd может получить доступ к файлам других пользователей после активации safe_mode_gid. .
Фактически вы должны объединить safe_mode_gid + open_basedir и установить домашний адрес пользователя как значение open_basedire, чтобы избежать этого.
HTH