PHP chmod():不允许操作,涉及安全模式弃用?
Posted
技术标签:
【中文标题】PHP chmod():不允许操作,涉及安全模式弃用?【英文标题】:PHP chmod( ):Operation not permitted, safe_mode deprecation involved? 【发布时间】:2014-05-29 00:19:24 【问题描述】:我正在努力从 php 中掌握chmod()
的概念,因为我目前正在学习的课程有点过时并且涉及安全模式。它指出,当安全模式关闭时,当所有者与执行命令的人不同时,使用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 时:
-rwxrwxrwx@ 1 daemon staff 24 Apr 14 06:59 file_permissions.php
一切正常,我不明白为什么,正如我所理解的那样,关闭安全模式,文件所有权将毫无意义,而是文件权限是处理访问的方式。
【问题讨论】:
【参考方案1】:daemon
用户不是root
,因此不允许更改其他用户拥有的文件的模式。 PHP safe_mode 不是这里的原因。警告告诉您尝试操作失败,因为 Web 服务器用户无权更改模式。
您手动将文件的所有权更改为daemon
后操作成功,因为允许用户更改他们拥有的文件的模式。
【讨论】:
好的,那我应该采取什么方法呢?关闭的安全模式不是允许更改用户不拥有的文件的权限吗?另外,我相信我读到 chmod() 不需要超级用户权限,只需要 chown()chmod
并不总是需要 root - 用户可以更改他们拥有的文件的模式 - joelhernandez
可以更改 joelhernandez
拥有的文件的模式,daemon
可以更改daemon
拥有的文件的模式。用户(root 除外)无法更改他们不拥有的文件的模式 - daemon
无法更改 joelhernandez
拥有的文件的模式。
至于你应该做什么,如果不知道更多关于你想要完成的事情,很难说。
我投票的评论解决了我的疑问!谢谢,我猜这个教程不是很简单!以上是关于PHP chmod():不允许操作,涉及安全模式弃用?的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作”
ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作”
Laravel chmod(/var/dev/project/storage/oauth-public.key):操作失败:不允许操作
ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 2linux 如何修改只读文件 3ubuntu安装