md5_file () 의 기본 구문은 다음과 같습니다.
<code> $ hash = md5_file ( '경로/to/file.txt'); </코드>성공하면 32 비트 16 진수 문자열을 반환합니다. 실패하면 거짓을 반환합니다. 핵심 요점은 다음과 같습니다. 실패는 예외를 던지지 않지만 부울 가치를 거짓으로 반환하므로 판단에주의를 기울여야합니다.
이것은 가장 일반적인 문제입니다. 지정된 파일 경로가 잘못되었거나 파일이 전혀 존재하지 않으면 md5_file ()은 직접 실패하고 false를 반환합니다.
<code> $ hash = md5_file ( '/invalid/path/to/file.txt'); if ($ hash === false) {echo '파일 경로가 유효하지 않거나 파일이 존재하지 않는다'; } </code> 문제 해결 제안 :
파일이 실제로 존재하는지 확인하려면 file_exists () 를 사용하십시오.
파일이 존재하더라도 PHP가 위치한 프로세스 사용자는 읽기 권한이 없으므로 MD5_File ()가 실패하게됩니다.
예:
<code> chmod ( '/path/to/file.txt', 0000); // 모든 권한을 비활성화하면 $ HASH = MD5_FILE ( '/PATH/TO/FILE.TXT'); // 거짓 </코드>를 반환합니다 문제 해결 제안 :
IS_READABLE ()를 사용하여 파일에 읽은 권한이 있는지 확인하십시오.
Windows Systems에서 일부 프로그램에서 파일에만 액세스하는 경우 PHP는 파일 내용을 읽지 못할 수 있으며, 이로 인해 허위 반환이 발생할 수도 있습니다.
문제 해결 제안 :
파일을 다른 위치로 복사하여 MD5_File () 로 읽거나 다른 도구를 사용하여 잠긴지 확인하십시오.
md5_file ()는 스트리밍 읽기를 사용하지만 (모든 파일은 한 번에 메모리에로드되지 않음) Memory_Limit이 PHP 구성이 너무 낮 으면 큰 파일을 읽을 때 실패 할 수 있습니다.
문제 해결 제안 :
Memory_Limit 설정을 적절하게 개선하거나 명령 줄 스크립트 (일반적으로 더 편안한 제한)를 사용하여 실행하십시오.
MD5_FILE ()는 URL을 통해 원격 파일을 읽는 것을 지원합니다.
<code> $ hash = md5_file ( 'http://m66.net/files/sample.txt'); </코드>그러나 이러한 호출은 php.ini 에서 allow_url_fopen이 활성화 된 경우에만 성공합니다. 이 옵션이 활성화되지 않으면 반환 값은 False 입니다.
문제 해결 제안 :
구성 파일을 확인하거나 코드로 확인하십시오.
이 기능은 마지막 런타임 오류에 대한 자세한 정보를 출력 할 수 있으며, 이는 문제 해결에 매우 유용합니다.
추적 후 촉진하기 위해 로그에 오류 정보를 작성하는 것이 좋습니다.
<code> if (($ hash = md5_file ($ filepath)) === false) {error_log ( 'md5_file 실패 :'. print_r (error_get_last (), true); } </code>때로는 파일 자체에 문제가 없지만 경로 스티치 또는 가변 오염으로 인해 경로 오류가 발생합니다. fopen () 로 시도 할 수 있습니다.
<code> if (! $ hone = @fopen ($ filepath, 'rb')) {echo '파일 오프닝 실패'; } </code>