Die grundlegende Syntax von md5_file () lautet wie folgt:
<code> $ hash = md5_file ('path/to/file.txt'); </code>Wenn es erfolgreich ist, gibt es eine 32-Bit-Hexadezimalschnur zurück; Wenn es fehlgeschlagen ist, gibt es falsch zurück. Der entscheidende Punkt ist: Der Versagen bringt keine Ausnahme, sondern gibt den booleschen Wert falsch zurück , sodass Sie auf das Urteil achten müssen.
Dies ist das häufigste Problem. Wenn der angegebene Dateipfad falsch ist oder die Datei überhaupt nicht existiert, fehlschlägt MD5_FILE () direkt und gibt False zurück.
<code> $ hash = md5_file ('/Invalid/path/to/file.txt'); if ($ hash === false) {echo 'Der Dateipfad ist ungültig oder die Datei existiert nicht'; } </code> Fehlerbehebung Vorschläge:
Verwenden Sie Datei_Exists (), um zu bestätigen, ob die Datei wirklich vorhanden ist.
Auch wenn die Datei vorhanden ist, hat der Benutzer des Prozesses, in dem sich PHP befindet, keine Leseberechtigung, was dazu führt, dass MD5_File () fehlschlägt.
Beispiel:
<Code> chmod ('/path/to/file.txt', 0000); // Alle Berechtigungen deaktivieren $ hash = md5_file ('/path/to/file.txt'); // false </code> zurückgeben Fehlerbehebung Vorschläge:
Verwenden Sie IS_READABLE (), um zu überprüfen, ob die Datei die Berechtigung ausgelegt hat.
Wenn einige Programme unter Windows -Systemen ausschließlich auf Dateien zugreifen, kann PHP möglicherweise nicht die Dateiinhalte lesen, was auch zu einer falschen Rückgabe führen kann.
Fehlerbehebung Vorschläge:
Versuchen Sie, die Datei an einen anderen Speicherort zu kopieren und mit MD5_File () zu lesen, oder überprüfen Sie mit anderen Tools, ob sie gesperrt ist.
Obwohl MD5_File () Streaming -Lesen verwendet (alle Dateien werden nicht sofort in den Speicher geladen), kann es beim Lesen großer Dateien fehlschlagen, wenn MECAME_LIMIT in der PHP -Konfiguration zu niedrig ist.
Fehlerbehebung Vorschläge:
Verbessern Sie die Einstellungen von majore_limit entsprechend oder führen Sie mit Befehlszeilenskripten (normalerweise entspanntere Einschränkungen) aus.
md5_file () unterstützt das Lesen von Remotedateien über URLs, zum Beispiel:
<code> $ hash = md5_file ('http://m66.net/files/sample.txt'); </code>Ein solcher Anruf ist jedoch nur erfolgreich, wenn degly_url_fopen in php.ini aktiviert ist. Wenn diese Option nicht aktiviert ist, ist der Rückgabewert falsch .
Fehlerbehebung Vorschläge:
Überprüfen Sie die Konfigurationsdatei oder bestätigen Sie mit Code:
Diese Funktion kann detaillierte Informationen zum letzten Laufzeitfehler ausgeben, was für die Fehlerbehebung von Ausnahmen sehr hilfreich ist.
Es wird empfohlen, Fehlerinformationen in das Protokoll zu schreiben, um die Nachverfolgung zu erleichtern:
<Code> if (($ hash = md5_file ($ filepath)) === false) {error_log ('md5_file fehlgeschlagen:'. print_r (error_get_last (), true)); } </code>Manchmal hat die Datei selbst kein Problem, aber Pfadfehler werden durch Pfadnähten oder variable Verschmutzung verursacht. Sie können es mit fopen () versuchen:
<Code> if (! $ handle = @fopen ($ filepath, 'rb') {echo 'Dateiöffnung fehlgeschlagen'; } </code>