我已经设置了一个演示“管理员”网站,所有文件权限设置为 555 的目录和 444 的文件,以便禁用任何“保存”功能。到目前为止,一切都很好。
但是,我注意到 PHP touch()函数不受文件权限的影响?我在没有写入权限的目录上成功运行 PHP touch() (555)。似乎有点奇怪。这是预期的行为(PHP 7.2)吗?
我试图阻止 touch() 能够执行(通过文件权限),但目前无法看到这是怎么可能的。
谢谢。
我已经设置了一个演示“管理员”网站,所有文件权限设置为 555 的目录和 444 的文件,以便禁用任何“保存”功能。到目前为止,一切都很好。
但是,我注意到 PHP touch()函数不受文件权限的影响?我在没有写入权限的目录上成功运行 PHP touch() (555)。似乎有点奇怪。这是预期的行为(PHP 7.2)吗?
我试图阻止 touch() 能够执行(通过文件权限),但目前无法看到这是怎么可能的。
谢谢。
从utimes(3)
文档中:
进程的有效用户 ID 应与文件的所有者相匹配,或者具有对文件的写访问权或适当的权限,以便以这种方式使用此调用。
因此,即使没有写访问权限,所有者也可以更新时间戳。您需要更改文件的所有权,以便它们与运行 PHP 脚本的用户不同。
如果这是一个问题,也许您应该使用其他方法来跟踪文件修改时间的更改。