In PHP ist die Funktion md5_file () ein sehr bequemes Werkzeug. Es kann direkt den MD5 -Hash -Wert einer angegebenen Datei berechnen, der häufig zur Überprüfung der Dateiintegrität verwendet wird. In diesem Artikel wird vorgestellt, wie die Funktion MD5_FILE () verwendet wird, um alle Dateien in einem Verzeichnis zu iterieren und ihre MD5 -Hash -Werte in einer Protokolldatei aufzunehmen.
md5_file (String $ Dateiname): String | False
Parameter $ Dateiname : Der Dateipfad zur Berechnung von MD5.
Rückgabewert: MD5 -Hash -Zeichenfolge der Datei, falls fehlgeschlagen, return false .
Beispiel:
$hash = md5_file('path/to/file.txt');
echo $hash;
Verwenden Sie die Recursive Directory Traversal -Funktion von PHP (wie z. B. rekursive DirectoryToryIterator ), um alle Dateipfade zu erhalten.
Rufen Sie die Funktion md5_file () für jede Datei auf, um den Hash -Wert zu erhalten.
Schreiben Sie den Dateipfad und den entsprechenden MD5 -Wert in die Protokolldatei.
<?php
// Der Verzeichnisweg zu Traverse
$directory = '/path/to/your/directory';
// Protokolldateipfad
$logFile = '/path/to/your/logfile.log';
// Öffnen Sie die Protokolldatei,Schreiben anhängen
$logHandle = fopen($logFile, 'a');
if (!$logHandle) {
die("无法Öffnen Sie die Protokolldatei\n");
}
// Rekursives Verzeichnis
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS)
);
foreach ($iterator as $file) {
if ($file->isFile()) {
$filePath = $file->getPathname();
// Berechnen Sie die DateiMD5Hash -Wert
$hash = md5_file($filePath);
if ($hash !== false) {
// Schreiben Sie in Protokollformat:Dateipfad + MD5Wert
$logLine = $filePath . ' : ' . $hash . PHP_EOL;
fwrite($logHandle, $logLine);
} else {
// Fehlerinformationen aufzeichnen
$logLine = $filePath . " : Nicht berechnenMD5Wert" . PHP_EOL;
fwrite($logHandle, $logLine);
}
}
}
fclose($logHandle);
echo "Alle DateienMD5Wert已记录到日志中。\n";
?>
Stellen Sie sicher, dass das PHP -Skript Berechtigungen in das angegebene Verzeichnis und Protokolldateien gelesen und schreiben.
Um übermäßige Protokolldateien zu vermeiden, können Sie sie regelmäßig reinigen oder die Protokolldateien nach Datum teilen.
Wenn Sie den Dateipfad ausgeben möchten, der eine URL enthält, können Sie den Domänennamenteil ersetzen, z .
Zum Beispiel: