PHP在fopen上更改默认用户

问题描述

在尝试使用其他用户而不是www-data写入文件时遇到问题。 我需要将该文件保留在一个不是我的映射单元上,因此我无法更改该单元的权限。 Insetead我有一个用户名一个用户组,我们称它们为“ myself”:“ myself”

我正在使用Symfony 5 Filesystem来移动文件,但是我仍然使用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,false);

然后我尝试使用认的PHP chown()函数,如下所示:

chown($url_origin,'myself');

并得到另一个错误:不允许操作。

我想我需要在某处指定用户属性,但是我现在一无所知。关于如何实现这一目标的任何想法?我确定我缺少明显的东西。

谢谢。

解决方法

您不能使用“ chown”,因为只有“ root”可以使用“ chown”。

方法是通过以我自己的用户身份运行的php-fpm在服务器中设置“ chmod”或更改配置。

致谢