PHPでは、 MD5_FILE()関数は非常に便利なツールです。指定されたファイルのMD5ハッシュ値を直接計算できます。これは、ファイルの整合性検証によく使用されます。この記事では、MD5_FILE()関数を使用して、ディレクトリ内のすべてのファイルを反復し、MD5ハッシュ値をログファイルに記録する方法を紹介します。
md5_file(string $ filename):string | false
パラメーター$ filename :MD5を計算するファイルパス。
返品値:ファイルのmd5ハッシュ文字列が失敗した場合、 falseを返します。
例:
$hash = md5_file('path/to/file.txt');
echo $hash;
すべてのファイルパスを取得するには、PHPの再帰ディレクトリトラバーサル関数( RecursivedIrectoryiteratorなど)を使用します。
各ファイルのmd5_file()関数を呼び出して、ハッシュ値を取得します。
ファイルパスと対応するMD5値をログファイルに書き込みます。
<?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";
?>
PHPスクリプトに、指定されたディレクトリおよびログファイルに許可を読み取りおよび書き込みにしていることを確認してください。
過度のログファイルを避けるために、定期的にクリーニングしたり、日付ごとにログファイルを分割したりできます。
URLを含むファイルパスを出力する場合は、ドメイン名パートを置き換えることができます。たとえば、 https://example.com/path/file.jpgをhttps://m66.net/path/file.jpgに置き換えます。
例えば: