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


PHP chmod( ):Operation not permitted, safe_mode deprecation involved?

我很难从PHP中理解chmod()的概念,因为我目前正在学习的课程有点过时,而且涉及到safe_mode。它指出,当safe_mode关闭时,当所有者与执行命令的所有者不同时,使用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,以确认我的Web服务器在用户"守护进程"下运行

当我将文件所有权更改为守护程序时:

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

一切都正常,我不明白为什么我已经明白,如果关闭了safe_mode,文件所有权将毫无意义,相反,文件权限是处理访问的方式。

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

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