PHP touch() 不受文件权限影响?

PHP touch() is not affected by file permissions?

我已经设置了一个演示 "admin" 网站,其中目录的所有文件权限设置为 555,文件的所有文件权限设置为 444,以便禁用所有 "save" 功能。到目前为止一切顺利。

但是,我注意到 PHP touch() 函数不受文件权限的影响?我在没有写入权限 (555) 的目录上成功 运行 PHP touch() 。似乎有点奇怪。这是预期的行为吗 (PHP 7.2)?

我试图阻止 touch() 执行(通过文件权限),但目前看不出这是怎么可能的。

谢谢。

来自 utimes(3) 文档:

The effective user ID of the process shall match the owner of the file, or has write access to the file or appropriate privileges to use this call in this manner.

因此所有者即使没有写入权限也可以更新时间戳。您需要更改文件的所有权,以便它们与用户 运行 和 PHP 脚本不同。

如果这是一个问题,也许您应该使用其他方法来跟踪文件修改时间的变化。