18

我正在努力掌握chmod()PHP 的概念,因为我目前正在学习的课程有点过时并且涉及安全模式。它指出,当安全模式关闭时,chmod()当所有者与执行命令的所有者不同时,修改文件权限的限制将被删除。我正在与 XAMPP 一起使用 PHP 5.5.9,我已验证标志已关闭(以防万一),但似乎无法使其正常工作。当我执行以下 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

一切正常,我不明白为什么正如我所理解的那样,关闭安全模式,文件所有权将毫无意义,而是文件权限是处理访问的方式。

4

1 回答 1

28

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

手动更改文件的所有权后操作成功,daemon因为允许用户更改他们拥有的文件的模式。

于 2014-04-14T21:13:51.283 回答