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