chown: операция не разрешена

У меня проблема, когда мне нужно установить права владельца файла для разных пользователей в системе с помощью 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 , хотя это может быть опасно. Ссылки на обе функции перечислены ниже: