Php 周:不允许操作
我有一个问题,需要通过php脚本将文件所有者权限设置为系统中的不同用户 所以我通过下面的命令来实现,其中1002是系统的用户idPhp 周:不允许操作,php,linux,shell,Php,Linux,Shell,我有一个问题,需要通过php脚本将文件所有者权限设置为系统中的不同用户 所以我通过下面的命令来实现,其中1002是系统的用户id file_put_contents($filename, $content); system("chown 1002 " . $filename . ""); 但是,我仅在productions server中遇到此错误(测试服务器工作正常) 仅当您是root用户(或以root权限运行)时,才允许更改文件的所有者 尝试将文件名的所有者更改为用户。只有超级用户可以更改
file_put_contents($filename, $content);
system("chown 1002 " . $filename . "");
但是,我仅在productions server中遇到此错误(测试服务器工作正常)
仅当您是root用户(或以root权限运行)时,才允许更改文件的所有者 尝试将文件名的所有者更改为用户。只有超级用户可以更改文件的所有者。 最有可能的情况是,在测试服务器上,运行php脚本的apache进程已经拥有该文件,或者您正在以root权限运行该文件,而在生产服务器上则不是这样。我绝对不建议在具有root权限的生产环境中运行 根据具体情况,您可以使用
chgrp
功能更改文件的“组”设置。这是任何对文件具有写入权限的人都允许的。您还可以使用chmod
函数使文件对任何人都可写,尽管这可能很危险。下面列出了指向这两个功能的链接:
Linux
,我假设您使用的是Apache
服务器。在生产服务器中,Apache
进程拥有所有php进程,通常由Apache用户
或非根用户
的其他用户执行
记住这一点,您要做的是使用chown
函数(将作为apache用户执行)更改您不拥有的文件的所有者。(是的,您只能将所有者更改为您拥有的文件)
引用php手册,函数尝试更改所有者:
尝试将文件名的所有者更改为用户。只有超级用户可以更改文件的所有者
在生产服务器中,您通常以用户目录模式运行,这意味着您被绑定到主目录中的文件,例如/home/yourusername/public\u html
,因此,/var
目录中的文件根本无法访问(它们通常归root所有)这就是为什么你不能吃东西
我希望这有帮助。干杯 请将其中一个答案标记为解决方案,以便将此问题标记为已结束。如果它们都没有提供解决方案,请提供其他信息。谢谢。如果脚本是通过cron运行的,它将以root用户身份运行,root用户可以更改文件所有权。(像apache这样的非超级用户不需要。)希望这能帮助一些人!
chown: changing ownership of `/var/spool/asterisk/06h12m7.call':
Operation not permitted