PHP chmod():不允许操作,涉及safe_mode弃用?

Joe*_*dez 16 php apache file-permissions chmod

我正在努力掌握chmod()PHP 的概念,因为我目前正在采取的课程有点过时,涉及safe_mode.它指出,当safe_mode关闭时,将删除chmod()当所有者与执行命令的所有者不同时修改对文件的权限的限制.我正在使用PHP 5.5.9与XAMPP结合使用,我已经验证了标志已关闭(以防万一),但似乎无法使其正常工作.当我执行以下PHP脚本时:

echo "File permissions :" .  decoct(fileperms("file_permissions.php"));
chmod("file_permissions.php" ,0777);
Run Code Online (Sandbox Code Playgroud)

我收到以下输出:

Warning: chmod(): Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我对该文件的权限如下

-rwxrwxrwx@  1 joelhernandez  staff     24 Apr 14 06:59 file_permissions.php
Run Code Online (Sandbox Code Playgroud)

我已经执行ps aux | grep httpd以确认我的网络服务器是在用户"守护进程"下运行的.

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

-rwxrwxrwx@  1 daemon  staff     24 Apr 14 06:59 file_permissions.php
Run Code Online (Sandbox Code Playgroud)

一切正常,我不明白为什么我已经理解,关闭safe_mode,文件所有权将没有任何意义,而文件权限是处理访问的方式.

And*_*ico 23

daemon用户是不是root,所以它不允许更改由其他用户拥有的文件的模式.PHP safe_mode不是这里的原因.警告告诉您尝试的操作失败,因为Web服务器用户没有权限进行模式更改.

手动将文件的所有权更改为之后,操作成功,daemon因为允许用户更改其拥有的文件的模式.

  • `chmod`并不总是需要root用户 - 用户可以改变他们拥有的文件模式--`joelhernandez`可以改变`joelhernandez`拥有的文件模式,`daemon`可以改变`daemon`拥有的文件模式.用户(root除外)无法更改他们不拥有的文件模式 - "daemon"无法更改`joelhernandez`拥有的文件模式. (4认同)