PHP chmod( ): 不允许操作,涉及安全模式弃用?

问题描述 投票:0回答:2

我正在努力理解 PHP 中

chmod()
的概念,因为我目前正在学习的课程有点过时并且涉及安全模式。它指出,当安全模式关闭时,当所有者与执行命令的所有者不同时,使用
chmod()
修改文件权限的限制将被删除。我正在将 PHP 5.5.9 与 XAMPP 结合使用,我已经验证了这些标志已关闭(以防万一),但似乎无法让它工作。当我执行以下 PHP 脚本时:

echo "File permissions :" .  decoct(fileperms("file_permissions.php"));
chmod("file_permissions.php" ,0777);

我收到以下输出:

Warning: chmod(): Operation not permitted

我对该文件的权限如下

-rwxrwxrwx@  1 joelhernandez  staff     24 Apr 14 06:59 file_permissions.php

我已执行

ps aux | grep httpd
来确认 我的网络服务器正在用户“daemon”下运行。

当我将文件所有权更改为daemon时:

-rwxrwxrwx@  1 daemon  staff     24 Apr 14 06:59 file_permissions.php

一切正常,我不明白为什么,因为我知道关闭安全模式后,文件所有权将毫无意义,相反文件权限是处理访问的方式。

php apache file-permissions chmod virtualmin
2个回答
29
投票

daemon
用户不是
root
,因此不允许更改不同用户拥有的文件的模式。 PHP safe_mode 不是这里的原因。该警告告诉您尝试的操作失败,因为 Web 服务器用户没有更改模式的权限。

手动将文件的所有权更改为

daemon
后操作成功,因为用户可以更改自己拥有的文件的模式。


0
投票

通过更改文件的所有权解决了问题。仍然无法弄清楚为什么不允许 root 用户或普通用户在同一目录中修改或创建文件或目录,尽管将文件所有权更改为 all

sudo chown -R daemon:daemon /opt/lampp/htdocs/html/directory/
© www.soinside.com 2019 - 2024. All rights reserved.