Position actuelle: Accueil> Derniers articles> md5_file () avec file_exists () pour déterminer si le fichier est disponible

md5_file () avec file_exists () pour déterminer si le fichier est disponible

M66 2025-06-06

En PHP, nous devons souvent déterminer si un fichier existe et vérifier davantage si le fichier est valide ou non. File_exists () est une fonction très courante qui peut rapidement déterminer si un fichier existe dans un chemin spécifié. Cependant, la simple existence du fichier ne signifie pas que son contenu est ce que nous attendons. Pour le moment, nous pouvons combiner md5_file () pour effectuer une vérification du contenu.

Utilisation de base

Examinons d'abord la méthode d'utilisation de base de file_exists () :

 $filePath = '/path/to/your/file.txt';

if (file_exists($filePath)) {
    echo "Le fichier existe。";
} else {
    echo "Le fichier n'existe pas。";
}

Cette fonction détermine simplement s'il y a un fichier sur le chemin. Si vous devez déterminer davantage si ce fichier est celui que nous attendons, vous pouvez le vérifier en calculant sa valeur MD5 par md5_file () :

 $expectedHash = '5d41402abc4b2a76b9719d911017c592'; // Valeur de hachage de fichier attendu
$actualHash = md5_file($filePath);

if ($actualHash === $expectedHash) {
    echo "Le fichier est valide et n'a pas été falsifié。";
} else {
    echo "Les fichiers peuvent être modifiés ou corrompus。";
}

Cas réel: vérifiez l'intégrité après avoir téléchargé le fichier

Supposons que nous ayons téléchargé un package compressé à partir de https://m66.net/files/update.zip , nous voulons nous assurer que le fichier est téléchargé avec succès et n'a pas été modifié à mi-chemin. À l'heure actuelle, vous pouvez utiliser file_exists () combiné avec md5_file () :

 $url = 'https://m66.net/files/update.zip';
$localPath = __DIR__ . '/downloads/update.zip';
$expectedMd5 = 'c4ca4238a0b923820dcc509a6f75849b'; // Valeur de hachage de fichiers du serveur

if (file_exists($localPath)) {
    if (md5_file($localPath) === $expectedMd5) {
        echo "Le fichier existe且完整。";
    } else {
        echo "Le fichier existe但不完整,Envisagez de redémarrer。";
    }
} else {
    echo "Le fichier n'existe pas,Veuillez le télécharger d'abord:$url";
}

Choses à noter

  1. md5_file () lira l'intégralité du fichier, donc pour les fichiers volumineux, il peut être plus lent et consommer plus de mémoire.

  2. Dans les environnements avec des exigences de sécurité élevées, il est recommandé d'utiliser un algorithme de hachage plus sécurisé tel que SHA-256 (qui peut être implémenté à l'aide de la fonction hash_file () ).

  3. md5_file () renvoie false lorsque le fichier n'existe pas. Vous pouvez utiliser la méthode suivante pour éviter les erreurs de jugement:

 $hash = file_exists($localPath) ? md5_file($localPath) : false;

Résumer

La combinaison de fichiers_exists () et md5_file () peut déterminer efficacement si le fichier existe et vérifie son intégrité, ce qui convient particulièrement à la gestion des scénarios tels que le téléchargement de fichiers, la vérification du cache et le sabotage des fichiers. En vérifiant la valeur de hachage, nous pouvons confirmer avec plus de confiance que le fichier local est cohérent avec le serveur ou le fichier d'origine. Cette méthode est simple mais très pratique, et est l'une des compétences de base que chaque développeur PHP devrait maîtriser.