繁体   English   中英

chown:不允许操作

[英]chown: Operation not permitted

我有问题,我需要通过PHP脚本将文件所有者权限设置为系统中的不同用户

所以我通过以下命令执行此操作,其中1002是系统的用户ID。

file_put_contents($filename, $content);
system("chown 1002 " . $filename . "");

但是我只在制作服务器中得到这个错误(测试服务器工作正常)

chown: changing ownership of `/var/spool/asterisk/06h12m7.call':
Operation not permitted

如果您是root用户(或以root权限运行),则只允许更改文件的所有者。

尝试将文件filename的所有者更改为用户user。 只有超级用户才可以更改文件的所有者。 http://www.php.net/manual/en/function.chown.php

最有可能在您的测试服务器上运行php脚本的apache进程已经拥有该文件,或者您正在以root权限运行它,而生产服务器上则不是这种情况。 我绝对不建议在具有root权限的生产环境中运行。

根据具体情况,一些可能有所帮助的解决方法,您可以使用chgrp函数更改文件的“组”设置。 任何对该文件具有写权限的人都允许这样做。 您也可以使用chmod函数将文件写入任何人,尽管这可能很危险。 下面列出了这两种功能的链接:

由于您将此问题标记为Linux我假设您使用的是Apache服务器。 在生产服务器中,拥有所有php进程的Apache进程通常由apache user或非root user其他用户执行。

请记住,您要做的是使用chown函数(将以apache用户身份执行)来更改您不拥有的文件的所有者。 (是的,您只能将所有者更改为您拥有的文件)。

你看,引用php手册, chown函数试图改变所有者:

尝试将文件filename的所有者更改为用户user。 只有超级用户才可以更改文件的所有者。

在生产服务器中,通常您在用户目录模式下运行,这意味着您绑定到主目录中的文件,例如/home/yourusername/public_html ,因此, /var目录中的文件只是在你的触及范围(它们通常由root拥有),这就是为什么你不能chown。

我希望它有所帮助。 干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM