我有问题,我需要通过 php 脚本为系统中的不同用户设置文件所有者权限
所以我通过以下命令执行此操作,其中 1002 是系统的用户 ID。
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 http://www.php.net/manual/en/function.chown.php功能attempts更改所有者:
尝试将文件 filename 的所有者更改为用户 user。只有超级用户可以更改文件的所有者。
在生产服务器中,通常您在用户目录模式下运行,这意味着您绑定到主目录中的文件,例如/home/yourusername/public_html
因此,文件内/var
目录根本超出您的范围(它们通常由 root 拥有),这就是您无法 chown 的原因。
我希望它有帮助。干杯!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)