You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP函数或Linux命令判断文件是否被用户修改?

判断文件是否修改(无原文件访问权限)的方案

刚好碰到过类似的需求,给你整理两个靠谱的方案,分别对应PHP和Linux命令行场景,完全适配你没法访问原文件的情况:

PHP 实现方案

核心思路是提前留存原文件的哈希值快照(比如在原文件还能访问的时候生成并存储到数据库/配置文件里),之后对比当前文件的哈希值和快照是否一致——哈希值是文件内容的唯一标识,只要内容修改,哈希就会变化,和修改时间完全无关。

示例代码:

// 假设你预先保存了原文件的SHA256哈希值(原文件可访问时生成)
$originalFileHash = '这里替换为原文件的SHA256哈希字符串';
$targetFilePath = '/path/to/your/target/file';

if (file_exists($targetFilePath)) {
    // 计算当前文件的SHA256哈希
    $currentFileHash = hash_file('sha256', $targetFilePath);
    // 对比哈希,输出是否修改
    echo $currentFileHash !== $originalFileHash ? '是' : '否';
} else {
    echo '目标文件不存在';
}

提示:推荐用SHA256哈希,比MD5/SHA1更安全,避免哈希碰撞的风险。

Linux 命令行方案

同样基于哈希对比的思路,先在原文件可访问时生成哈希快照文件,后续用命令对比即可:

1. 预先生成哈希快照(原文件可访问时执行)

# 生成原文件的SHA256哈希并保存到文件
sha256sum /path/to/original/file > file_hash_check.txt

2. 检查文件是否修改(原文件不可访问时执行)

# 先判断文件是否存在
if [ -f /path/to/current/file ]; then
    # 对比哈希,匹配则输出"否",不匹配输出"是"
    sha256sum --check file_hash_check.txt | grep -q "OK" && echo "否" || echo "是"
else
    echo "目标文件不存在"
fi

替代方案:如果需要更轻量的哈希,可以用md5sum或sha1sum,但SHA256的安全性更高。

内容的提问来源于stack exchange,提问作者Amin Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:46:54