涉及 PHP chmod( ) :Operation not permitted, safe_mode 弃用?

标签 php apache file-permissions chmod virtualmin

我正在努力从 PHP 中掌握 chmod() 的概念,因为我目前正在学习的类(class)有点过时并且涉及 safe_mode。它指出,随着 safe_mode 被关闭,当所有者与执行命令的所有者不同时,使用 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

一切正常,我不明白为什么在关闭 safe_mode 的情况下,文件所有权将毫无意义,文件权限才是处理访问的方式。

最佳答案

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

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

关于涉及 PHP chmod( ) :Operation not permitted, safe_mode 弃用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23070266/

相关文章:

php - 在前面插入空格的正则表达式\n

php - 两个日期之间的分钟数

php - joomla BASE HREF 使用 HTTP 而不是 HTTPS

Apache 别名虚拟主机

php - @mysql_connect 和 mysql_connect

php - 根据select查询结果更新数据库记录

javascript - 疯狂需要启用跨站点脚本

python-3.x - 在Python中写入远程服务器上的文件

flutter - 无法在 Flutter Web 上使用图像选择器选择图像(MissingPluginException)

c - 如何从已存在的文件中复制权限?