La syntaxe de base de md5_file () est la suivante:
<code> $ hash = md5_file ('path / to / file.txt'); </code>En cas de succès, il renvoie une chaîne hexadécimale 32 bits; En cas d'échec, il renvoie faux . Le point clé est: l'échec ne lance pas d'exception, mais renvoie la valeur booléenne fausse , vous devez donc prêter attention au jugement.
C'est le problème le plus courant. Si le chemin de fichier spécifié est mauvais ou si le fichier n'existe pas du tout, md5_file () échouera directement et reviendra faux .
<code> $ hash = md5_file ('/ invalid / path / to / file.txt'); if ($ hash === false) {echo 'Le chemin du fichier n'est pas valide ou le fichier n'existe pas'; } </code> Dépannage des suggestions:
Utilisez File_exists () pour confirmer si le fichier existe vraiment.
Même si le fichier existe, l'utilisateur du processus où PHP est situé n'a pas l'autorisation de lecture, ce qui entraînera l'échec de MD5_FILE () .
Exemple:
<code> chmod ('/ path / to / file.txt', 0000); // Désactiver toutes les autorisations $ hash = md5_file ('/ path / to / file.txt'); // renvoie false </code> Dépannage des suggestions:
Utilisez is_readable () pour vérifier si le fichier a lu l'autorisation.
Sur les systèmes Windows, si certains programmes accédent à des fichiers exclusivement, PHP peut ne pas être en mesure de lire le contenu du fichier, ce qui peut également entraîner un faux rendement.
Dépannage des suggestions:
Essayez de copier le fichier dans un autre emplacement et lisez-le avec md5_file () , ou utilisez d'autres outils pour vérifier s'il est verrouillé.
Bien que md5_file () utilise la lecture en streaming (tous les fichiers ne seront pas chargés en mémoire à la fois), si Memory_limit est trop faible dans la configuration PHP, il peut échouer lors de la lecture de fichiers volumineux.
Dépannage des suggestions:
Améliorez les paramètres de mémoire de manière appropriée ou exécutez à l'aide de scripts de ligne de commande (généralement des restrictions plus détendues).
md5_file () prend en charge la lecture des fichiers distants via des URL, par exemple:
<code> $ hash = md5_file ('http://m66.net/files/sample.txt'); </code>Cependant, un tel appel ne réussira que si ALLOT_URL_FOPEN est activé dans php.ini . Si cette option n'est pas activée, la valeur de retour est fausse .
Dépannage des suggestions:
Vérifiez le fichier de configuration ou confirmez avec le code:
Cette fonction peut diffuser des informations détaillées sur la dernière erreur d'exécution, ce qui est très utile pour le dépannage des exceptions.
Il est recommandé d'écrire des informations d'erreur dans le journal pour faciliter le post-suivi:
<code> if (($ hash = md5_file ($ filepath)) === false) {error_log ('md5_file a échoué:'. print_r (error_get_last (), true)); } </code>Parfois, le fichier lui-même n'a aucun problème, mais les erreurs de chemin sont causées par des coutures de chemin ou une pollution variable. Vous pouvez l'essayer avec fopen () :
<code> if (! $ handle = @fopen ($ filepath, 'rb')) {echo 'ouverture du fichier a échoué'; } </code>