У меня проблема, когда мне нужно установить права владельца файла для разных пользователей в системе с помощью php-скрипта
поэтому я делаю это с помощью следующей команды, где 1002 является идентификатором пользователя системы.
file_put_contents($filename, $content); system("chown 1002 " . $filename . "");
однако я получаю эту ошибку только на сервере производств (тестовый сервер работает нормально)
chown: changing ownership of `/var/spool/asterisk/06h12m7.call': Operation not permitted
Поскольку вы отметили этот вопрос как Linux
я предполагаю, что вы используете сервер Apache
. На производственных серверах процесс Apache
, который владеет всеми php-процессами, обычно выполняется пользователем apache user
или другим пользователем, который не является root user
.
Принимая это во внимание, вы пытаетесь использовать функцию chown
(которая будет выполняться как пользователь apache), чтобы изменить владельца файла, который у вас нет. (Да, вы можете изменять владельцев только на свои файлы).
Вы видите, цитируя руководство php, функция chown пытается изменить владельца:
Попытка изменить владельца файла имени файла пользователю пользователя. Только владелец суперпользователя может изменить владельца файла.
На рабочих серверах обычно вы работаете как в режиме пользовательского каталога, а это значит, что вы привязаны к файлам, находящимся в вашем домашнем каталоге, например, как /home/yourusername/public_html
и, как таковые, файлы внутри каталога /var
просто из (они обычно принадлежат root), и поэтому вы не можете кормить.
Надеюсь, это помогло. Ура!
Вам разрешено изменять владельца файла, если вы являетесь пользователем root (или выполняете с правами root).
Попытка изменить владельца файла имени файла пользователю пользователя. Только владелец суперпользователя может изменить владельца файла. http://www.php.net/manual/en/function.chown.php
Скорее всего, на вашем тестовом сервере процесс apache, выполняющий скрипт php, уже владеет файлом, или вы используете его с правами root, и это не так на вашем рабочем сервере. Я бы определенно не рекомендовал работать в рабочей среде с привилегиями root.
Некоторые работы, которые могут помочь в зависимости от ситуации, вы можете изменить настройку «группы» файла с помощью функции chgrp
. Это разрешается всем, у кого есть права на запись в файл. Вы также можете сделать файл доступным для записи всем, кто использует функцию chmod
, хотя это может быть опасно. Ссылки на обе функции перечислены ниже: