현재 위치: > 최신 기사 목록> hash_hmac_file () 오류 "파일 찾기 없음"이보고되면 어떻게해야합니까? 자세한 문제 해결 및 솔루션

hash_hmac_file () 오류 "파일 찾기 없음"이보고되면 어떻게해야합니까? 자세한 문제 해결 및 솔루션

gitbox 2025-07-09

1. 파일 경로 오류

가장 일반적인 이유 중 하나는 파일 경로 오류입니다. hash_hmac_file ()을 호출 할 때 파일 경로는 정확해야합니다. PHP는 실행할 때 현재 작업 디렉토리를 기반으로 파일 경로를 구문 분석합니다. 따라서 들어오는 경로가 올바르지 않거나 현재 스크립트와 관련된 상대 경로가 잘못된 경우 "파일 찾기 없음"오류로 이어집니다.

해결책:

  • 파일의 절대 경로가 올바른지 확인하십시오. 상대 경로를 사용하는 경우 PHP 스크립트가 현재 위치한 디렉토리와 관련하여 올바른 경로인지 확인하십시오.

  • realpath () 함수를 사용하여 파일의 절대 경로를 가져와 경로가 올바르게 구문 분석되도록하십시오.

 <span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'path/to/your/file.txt'</span></span><span>;
</span><span><span class="hljs-variable">$absolute_path</span></span><span> = </span><span><span class="hljs-title function_ invoke__">realpath</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$absolute_path</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일을 찾을 수 없습니다"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일의 절대 경로는 다음과 같습니다: "</span></span><span> . </span><span><span class="hljs-variable">$absolute_path</span></span><span>;
}
</span></span>

2. 파일 권한 문제

파일 경로가 올바른 경우에도 PHP 프로세스는 파일에 액세스하기에 충분한 권한이 있어야합니다. 파일의 권한이 올바르게 설정되지 않으면 PHP가 파일 내용을 읽지 않아 "파일 찾기 없음"오류를 초래할 수 있습니다.

해결책:

  • 파일에 PHP 사용자에게 읽을 수있는 권한이 있는지 확인합니다.

  • PHP 사용자가 파일을 읽을 수 있도록 chmod 명령을 사용하여 파일의 권한을 수정하십시오.

 <span><span><span class="hljs-built_in">chmod</span></span><span> 644 path/to/your/file.txt
</span></span>
  • PHP가 웹 서버 사용자로 실행중인 경우 사용자가 파일에 대한 권한을 읽었는지 확인하십시오. 일반적으로 웹 서버 사용자는 www-data 또는 apache 이며 다음 명령을 통해 현재 파일의 권한을 볼 수 있습니다.

 <span><span><span class="hljs-built_in">ls</span></span><span> -l path/to/your/file.txt
</span></span>

3. PHP 구성 파일 경로 제한

PHP의 구성 파일 php.ini 에 파일 액세스 경로에 제한이있을 수 있습니다. 예를 들어, Open_Basedir 지시문은 PHP가 액세스 할 수있는 파일 경로를 제한합니다. Open_basedir가 제한되면 PHP는 제한 외에는 파일에 액세스 할 수 없습니다.

해결책:

  • php.ini 파일에 Open_basedir 설정이 존재하는지 확인하십시오.

  • 제한이있는 경우 php.ini 파일을 수정하거나 액세스 할 디렉토리 경로를 늘리거나 Open_Basedir 한도를 비활성화하십시오.

 <span><span><span class="hljs-attr">open_basedir</span></span><span> = /var/www:/tmp:/usr/share/php:/path/to/your/files
</span></span>
  • 수정이 완료되면 웹 서버 또는 PHP-FPM 서비스를 다시 시작하십시오.


4. 파일이 존재하는지 여부

hash_hmac_file ()을 실행하기 전에 먼저 파일이 존재하는지 확인하십시오. 파일이 존재하지 않으면 PHP는 "파일 찾기"오류를 반환합니다.

해결책:

  • hash_hmac_file ()을 호출하기 전에 file_exists () 함수를 사용하여 파일이 존재하는지 확인하십시오.

 <span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'path/to/your/file.txt'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일이 존재하지 않습니다"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"파일이 존재합니다,계속 처리하십시오"</span></span><span>;
}
</span></span>
  • 파일이 존재하지 않으면 파일 경로가 올바른지 또는 파일의 삭제, 이동 또는 이름이 변경되었는지 확인해야합니다.


5. 파일 인코딩 문제

파일 이름에 특수 문자 또는 비 ASCII 문자가 포함 된 경우 PHP는 일부 환경에서 파일 경로를 올바르게 식별하지 않아 파일을 찾을 수 없습니다.

해결책:

  • 파일 경로에 불법 문자가 없는지 확인하십시오. 특수 문자 또는 비 ASCII 문자가있는 경우 mb_convert_encoding () 또는 utf8_encode () 와 같은 함수를 사용하여 파일 경로의 인코딩을 변환 할 수 있습니다.

 <span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'길/포함하다/특수 문자.txt'</span></span><span>;
</span><span><span class="hljs-variable">$encoded_path</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'GB2312'</span></span><span>);
</span></span>

6. 상대 경로 오류를 피하려면 절대 경로를 사용하십시오

파일이 고정 된 위치에 있다고 판단하면 가장 안전한 일은 상대 경로 대신 절대 경로를 사용하는 것입니다. PHP의 다른 작업 디렉토리로 인해 경로 해상도 오류를 피할 수 있습니다.

해결책:

  • __dir__ 상수를 사용하여 현재 파일의 절대 경로를 얻고 상대 경로를 결합하여 정확성을 보장하십시오.

 <span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-keyword">__DIR__</span></span><span> . </span><span><span class="hljs-string">'/path/to/your/file.txt'</span></span><span>;
</span></span>