現在の位置: ホーム> 最新記事一覧> すべてのファイルのMD5_FILE()値をログに記録する方法

すべてのファイルのMD5_FILE()値をログに記録する方法

M66 2025-05-31

PHPでは、 MD5_FILE()関数は非常に便利なツールです。指定されたファイルのMD5ハッシュ値を直接計算できます。これは、ファイルの整合性検証によく使用されます。この記事では、MD5_FILE()関数を使用して、ディレクトリ内のすべてのファイルを反復し、MD5ハッシュ値をログファイルに記録する方法を紹介します。


1。MD5_FILE ()関数の紹介

md5_file(string $ filename):string | false

  • パラメーター$ filename :MD5を計算するファイルパス。

  • 返品値:ファイルのmd5ハッシュ文字列が失敗した場合、 falseを返します。

例:

 $hash = md5_file('path/to/file.txt');
echo $hash;

2。実装のアイデア

  1. すべてのファイルパスを取得するには、PHPの再帰ディレクトリトラバーサル関数( RecursivedIrectoryiteratorなど)を使用します。

  2. 各ファイルのmd5_file()関数を呼び出して、ハッシュ値を取得します。

  3. ファイルパスと対応するMD5値をログファイルに書き込みます。


3。コードの例

<?php
// トラバースへのディレクトリパス
$directory = '/path/to/your/directory';

// ログファイルパス
$logFile = '/path/to/your/logfile.log';

// ログファイルを開きます,書き込みを追加します
$logHandle = fopen($logFile, 'a');
if (!$logHandle) {
    die("无法ログファイルを開きます\n");
}

// 再帰的なトラバースディレクトリ
$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS)
);

foreach ($iterator as $file) {
    if ($file->isFile()) {
        $filePath = $file->getPathname();
        // ファイルを計算しますMD5ハッシュ値
        $hash = md5_file($filePath);
        if ($hash !== false) {
            // ログ形式に書き込みます:ファイルパス + MD5価値
            $logLine = $filePath . ' : ' . $hash . PHP_EOL;
            fwrite($logHandle, $logLine);
        } else {
            // エラー情報を記録します
            $logLine = $filePath . " : 計算できませんMD5価値" . PHP_EOL;
            fwrite($logHandle, $logLine);
        }
    }
}

fclose($logHandle);

echo "すべてのファイルMD5価値已记录到日志中。\n";
?>

4。説明

  • PHPスクリプトに、指定されたディレクトリおよびログファイルに許可を読み取りおよび書き込みにしていることを確認してください。

  • 過度のログファイルを避けるために、定期的にクリーニングしたり、日付ごとにログファイルを分割したりできます。

  • URLを含むファイルパスを出力する場合は、ドメイン名パートを置き換えることができます。たとえば、 https://example.com/path/file.jpghttps://m66.net/path/file.jpgに置き換えます。

例えば: