2009-11-13 6 views
9

파일이 있는지 (절대 경로 또는 상대 경로를 사용하여) 존재하는지 확인하는 방법이 있습니까? PHP를 사용하고 있습니다. 나는 두 가지 방법을 찾았지 만 둘 중 하나만 받아 들일 수도 있습니다. 감사.절대 경로와 상대 경로가있는 파일이 있는지 확인하십시오.

+0

대체 파일에 대한 원격 URL에서 문서 루트 검사에 파일이없는 경우이 논리를 잊어 버렸습니다. 나는 아프다 롭의 대답을 시도해보십시오. 덕분에 – uji

답변

25

file_exists($file); 트릭을 수행하면 문서 루트에 상대적으로 검사 할 경우이 작동합니다 (같은 검증되지 않은) 상대 및 절대 경로 뭔가 둘을하는 함수를 원한다면 당신은 file_exists("{$_SERVER['DOCUMENT_ROOT']}path");

을 시도 할 수 상대 경로와 절대 경로 모두.

그러나 더 유용한 방법은 하드 코딩하지 않고 절대 경로를 사용하는 것입니다. 이를 수행하는 가장 좋은 방법은 dirname(__FILE__)을 사용하여 현재 파일의 디렉토리 전체 경로를 Windows 형식의 ether 유닉스로 가져 오는 것입니다. 그런 다음 파일이 존재하지 않으면 false를 반환하는 realpath()을 편리하게 사용합니다. 당신이해야 할 모든 해당 파일의 디렉토리에서 상대 경로를 지정하고 모두 함께 넣어된다

$path = dirname(__FILE__) . '/include.php'; 
if (realpath($path)) { 
    include($path); 
} 
+0

realpath()는 정규 경로를 반환하므로 심볼릭 링크를 제거하십시오. 이를 피할 수있는 방법이 있습니까? 그리고 표준이 아니더라도 경로가 절대적인지 확인하십시오. – Pierre

+0

훌륭한 교수법 – unkown

3

file_exists($path)은 스크립트 위치에 대한 절대 경로 또는 상대 경로를 확인합니다.

function check_file($path) { 
    return (file_exists($path) || file_exists("{$_SERVER['DOCUMENT_ROOT']}path")); 
} 
4
당신은 주어진 경로에 파일이 존재하는지 확인하고 해당 파일에 대한 확장 된 경로를 검색 할 수 realpath을 사용할 수 있습니다

:

$absPath = realpath($path); 
if ($absPath === false) { 
    // invalid path 
} 
관련 문제