PHP Изменить пользователя по умолчанию на fopen
У меня возникают проблемы при попытке записать файл с другим пользователем, а не с www-данными. Мне нужно оставить файл на сопоставленном блоке, который НЕ мой, поэтому я не могу изменить разрешения для этого. Вместо этого у меня есть имя пользователя и группа, назовем их "я": "я"
Я использую файловую систему Symfony 5 для перемещения файлов, но я все еще использую PHP fopen для создания этих файлов. Это то, что у меня есть до сих пор.
private function moveAndDeleteFile($url_origin, $url_destiny)
{
$filesystem = new Filesystem();
$a = fopen($url_origin, 'wa+');
fwrite($a, 'Test');
fclose($a);
$filesystem->copy($url_origin, $url_destino, true);
if (!$filesystem->exists($url_destiny)) {
return false;
}
$filesystem->remove($url_origin);
return true;
}
Это просто тест, поэтому я создаю файл (имя включено в $ url_origin) и пытаюсь скопировать файл в $ url_destiny, а затем удалить оригинал (опять же, просто тест).
Дело в том, что файл всегда создается www-data, и для моего целевого каталога мне нужно установить владельцем файла "я".
Есть ли способ изменить владельца файла с помощью sudo?
$filesystem->chown($url_origin, 'myself', false);
Это возвращает ошибку -> Не удалось выбрать файл "my/route/file.xml"
То же самое происходит при попытке
$filesystem->chgrp($url_origin, 'myself', false);
Затем я попытался использовать функцию PHP chown() по умолчанию, например:
chown($url_origin, 'myself');
И получите эту другую ошибку: операция не разрешена.
Я предполагаю, что мне нужно где-то указать свойства пользователя, но сейчас я не знаю. Есть идеи, как это пройти? Я уверен, что упускаю что-то очевидное.
Благодарность-.
1 ответ
Вы не можете использовать chown, потому что только root может использовать chown.
Способ состоит в том, чтобы установить "chmod" или изменить конфигурацию на вашем сервере с помощью php-fpm, запущенного с моим пользователем.
С уважением