目前我正在学习一个有点过时的课程,它涉及到了 chmod()
函数的概念,而我对此有些困惑。这个函数在 PHP 中的使用需要注意一些限制,比如 safe_mode 模式。但是通过关闭 safe_mode 模式,当执行该命令的用户与文件拥有者不同时,就可以去修改文件权限了。我使用的是 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
来确认我的Web服务器正在使用用户"daemon"运行。
当我将文件所有权更改为daemon时:
-rwxrwxrwx@ 1 daemon staff 24 Apr 14 06:59 file_permissions.php
一切都在正常工作,我不明白为什么会这样,因为我以为在关闭安全模式后,文件所有权就无关紧要了,反而文件权限是处理访问的方法。
chmod
命令并不总是需要 root 权限 - 拥有文件的用户可以更改文件的权限模式,joelhernandez
可以更改属于他的文件的权限模式,daemon
可以更改属于daemon
的文件的权限模式。普通用户(除了 root)不能更改他们没有拥有的文件的权限模式 -daemon
无法更改属于joelhernandez
的文件的权限模式。 - nobody