2012-07-14 4 views
1

루트에 파일 존재를 확인하기 위해 다음 코드를 시도했습니다.루트에서 파일이 존재하는지 확인하십시오.

if($res['profile_picture']!="" && file_exists("images/".$res['users_id']."/thumnails/".$res['profile_picture'])){ 
    $photo_p="images/".$res['users_id']."/thumnails/".$res['profile_picture']; 
} 

하위 디렉토리가 아닌 루트 디렉토리에서만 작동합니다.

함수 file_exist가 절대 경로와 상대 경로를 모두 확인하는지 여부가 확실하지 않으므로 ROOT 및 $_SERVER['DOCUMENT_ROOT']을 추가하려고했습니다. 그러나 여전히 효과가 없었습니다.

어떤 도움말이 필요합니까?

답변

2

코드 이식성을 위해서는 항상 file_exists()과 같은 함수에서 절대 경로를 사용하는 것이 좋습니다. 그렇지 않으면 다른 디렉토리에 여러 파일을 포함하거나 CLI 모드에서 실행 중일 때 머리를 깨뜨릴 수 있습니다.

ROOT 상수는 코드에서 정의되지 않을 수 있습니다. 또한 특정 상황에서는 $_SERVER['DOCUMENT_ROOT']을 신뢰할 수 없습니다. 즉, vhost_alias 아파치 모듈을 사용할 때입니다. 일반적으로

,

file_exists("{$_SERVER['DOCUMENT_ROOT']}/images/{$res['users_id']}/thumnails/{$res['profile_picture']}") 

당신을 위해 작동합니다.

0

함수 file_exists()는 지정한 경로를 정확하게 검사합니다. 거기에 환상적인 마법은 없습니다.

절대 경로를 지정하면 경로가 검사됩니다. 상대 경로를 건네면 현재 작업 디렉토리에서 검사합니다. 실제로 작업 디렉토리가 무엇인지 생각할 수도 있습니다.