2010-04-01 5 views
5

Есть ли способ установить php под управлением apache для создания папок с папкой, принадлежащей владельцу программы, которая создает его вместо того, чтобы принадлежать Apache?PHP mkdir и свойство apache

Использование word press создает новые папки для загрузки, но они принадлежат apache.apache, а не сайту, на котором они запущены. Это также происходит с использованием прошивок. На данный момент мы имеем SSH на сервере и chmod в папке, но казалось бы, что есть где-то переопределить право собственности за пределами любой программы, которая это делает.

ответ

2

Safe_mode включается на вашем сервере. Функция mkdir() создает папку с владельцем («apache», «none», ..), которая отличается от текущего владельца скрипта. И скрипты не могли загружать (перемещать, копировать) файлы в эту папку с другим владельцем (это не похоже на владельца текущего скрипта).

Отключить safe_mode и будет работать.

Для получения более подробной информации см. http://php.net/manual/en/features.safe-mode.php.

P.S. С разрешением safe_mode вы не можете использовать функцию chmod() в php.

+0

Это сработало Sanhe - Спасибо –

+0

** Внимание! Эта функция была DEPRECATED с PHP 5.3.0 и удалена с PHP 5.4.0. ** – Jim

1

Не напрямую, нет. Вы не можете «отдать» владение файлом другому пользователю, если только вы не root. Вы можете исследовать с помощью директивы apache «AssignUserID», чтобы заставить этого конкретного хоста работать как конкретный пользователь/группа. При том, что Apache/PHP будет создавать файлы с соответствующей собственностью

+0

На всякий случай кто-то думает, что это может быть способ пойти (используя mpm_perchild_module) - что я и думал: по ссылке: ** Этот модуль не работает. Разработка этого модуля не завершена и в настоящее время не активна. Не используйте perchild, если вы не программист, желающий помочь исправить это.** – Jim

0

Отъезда PHP chown() функцию

+1

Эта функция не работает, если не запускается суперпользователем. – webbiedave

2

Другим способом поставить пользователь апачского и «пользователь клиента» в новой группе. Дополнительно каталог должен использовать липкий бит SGID, чтобы каждый новый файл получил групповое присвоение этой новой группе. Таким образом, веб-сервер и «пользователи клиент» может работать с файлами без каких-либо проблем

[17:57] [email protected] /tmp/test $ ls -al /tmp/test 
total 9 
drwxrwsr-x 2 root users 48 Apr 1 17:55 . 
drwxrwxrwt 36 root root 9264 Apr 1 17:53 .. 

Как вы видите каталог получил немного палку SGID и владельцем является «пользователи» группа, в которой я (progman) есть. Нет, если другой пользователь добавляет файл, группа автоматически устанавливается в эту группу.

[17:55] proglap ~ # touch /tmp/test/x 

Это выполняется от root. Теперь мы получаем:

[17:57] [email protected] /tmp/test $ ls -la /tmp/test 
total 9 
drwxrwsr-x 2 root users 72 Apr 1 17:59 . 
drwxrwxrwt 36 root root 9264 Apr 1 17:53 .. 
-rw-r--r-- 1 root users 0 Apr 1 17:59 x 

Как вы видите добавленный файл из корня, но группа устанавливается в users и таким образом я может удалить его

[18:00] [email protected] /tmp/test $ rm x 
rm: remove write-protected regular empty file `x'? y 
[18:01] [email protected] /tmp/test $ ls -la /tmp/test 
total 9 
drwxrwsr-x 2 root users 48 Apr 1 18:01 . 
drwxrwxrwt 36 root root 9264 Apr 1 17:53 .. 

Имейте в виду, что вы до сих пор необходимо изменить chmod, если вы хотите Редактировать файл rw-r--r-- всего доступ к группе доступа. Но изменение chmod, возможно даже работа с umask, лучше, чем иметь дело с правами root и с использованием chown.

 Смежные вопросы

  • Нет связанных вопросов^_^