Как я могу позволить php создавать файлы с тем же владельцем, что и файлы, которые их создали? - PullRequest
6 голосов
/ 03 сентября 2010

PHP создает файлы с помощью apache: владение apache, которое, по-видимому, вызывает проблемы с другими php-скриптами, обращающимися к файлу.

Как разрешить php создавать файлы с тем же владельцем, что и файлы, которые их создали?

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

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

Спасибо

Ответы [ 5 ]

2 голосов
/ 03 сентября 2010

Если владелец имеет значение и несколько пользователей / проектов находятся на одном и том же сервере, возможно, вы захотите взглянуть на SuExec в Apache: файлы PHP будут запускаться пользователем, указанным в настройках, поэтому владение файлами по умолчанию автоматически обеспечиваетсяиз.Это экономит много chown / chmod'а, и процессы, запускаемые пользователем, более легко ограничены.

В противном случае я обычно создаю группу с владельцем и apache и устанавливаю значение umask по умолчанию 007.

0 голосов
/ 03 сентября 2010

a.m. упомянутое выше chown (), имейте в виду, что обычно chown () может использоваться только root, и ваша учетная запись веб-сервера вряд ли будет root, это очень плохая идея.

Можно настроить sudo, чтобы разрешить использование других пользователей в определенных областях и только конкретным пользователям. Просто создайте подходящую запись в / etc / sudoers, обычно с помощью программы visudo. Если у вас нет root-доступа, то ваш хостинг-провайдер должен будет сделать это за вас, если он это сделает.

Для получения дополнительной информации: http://www.sudo.ws/sudo/sudo.html

0 голосов
/ 03 сентября 2010

Попробуйте использовать владельца файла (http://www.php.net/manual/en/function.fileowner.php), чтобы получить идентификатор владельца текущего сценария, posix-getpwuid, чтобы получить имя пользователя для этого идентификатора (http://www.php.net/manual/en/function.posix-getpwuid.php) и chown ( http://php.net/manual/en/function.chown.php) чтобы установить пользователя для файлов.

0 голосов
/ 03 сентября 2010

Зачем проходить все программные хлопоты, чтобы сменить владельца? apache.apache очень опасный владелец в любом случае. Почему бы просто chmod 0777 файл, обеспечивающий чтение, запись и выполнение всем владельцам. Это устранит проблему.

Если у вас все еще есть проблемы, возможно, вам придется проверить, включен ли open_basedir. Если это так, то это не владение файлом или разрешения, а местоположение. В основном это означает, что вам нужно поместить файл в место, которое apache / php уже включило в свой путь.

0 голосов
/ 03 сентября 2010

Если вы используете ОС Windows, вы можете запустить Apache как службу и разрешить apache использовать разрешения вашей учетной записи при запуске.

...