2

我已经设置了一个演示“管理员”网站,所有文件权限设置为 555 的目录和 444 的文件,以便禁用任何“保存”功能。到目前为止,一切都很好。

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

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

谢谢。

4

1 回答 1

1

utimes(3)文档中:

进程的有效用户 ID 应与文件的所有者相匹配,或者具有对文件的写访问权或适当的权限,以便以这种方式使用此调用。

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

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

于 2018-03-07T18:12:32.297 回答