특정 파일이 php 서버 저장소에 실제로 존재하는지 확인하기 위해 사용할 수 있는 PHP 함수에 대하여 알아보겠습니다. 이때 사용할 수 있는 함수로 file_exists()is_file() 그리고 file() 함수가 있습니다.


# php 서버의 파일 유무 확인하는 방법 이 함수를 사용해 파일 존재 유무를 알아내는 방법은 아래와 같습니다.

file_exists(경로 및 파일이름);
is_file(파일이름);


셋 다 파일의 유무를 확인할 수 있지만 두 함수의 차이점은 무엇일까요? 일반적인 케이스에서는 file()을 사용하면 됩니다. 각 차이점은 다음과 같습니다.

is_file()의 경우 파일의 확인이 가능하며 디렉토리를 확인할 경우 무조건 false를 반환한다는 점입니다. 즉, 경로를 확인하기 위하여는 file_exists()를 사용하시기 바랍니다. 그리고 file() 함수는 다른 위치의 경로 ~ 파일의 호스트 주소를 함께 사용할 경우에 사용합니다. 그럼 자세한 건 아래 예제를 통해 알아보죠.


# file_exists() 함수 예제보기

file_exist()는 파일 및 경로의 유무를 확인 후 불리언(Boolean)으로 반환합니다.
<?php
  $is_file_exist = file_exists('/blog/test.txt');

  if ($is_file_exist) {
    echo 'Found it';
  }
  else {
    echo 'Not found.'
  }
?>

파일이 있는 경우 'Found it'을 출력합니다.


# is_file() 함수 예제보기

is_file() 함수는 함수명처럼 일반적인 파일인지.. 파일의 상태를 불리언으로 반환하므로 경로에 적용하기 어렵습니다. 그래서 경로는 false로 반환합니다.
<?php
  $is_file = is_file('/blog/test.txt');
  $is_file2 = is_file('/blog/');

  if ($is_file) {
    echo 'It is file';
  }

  if ($is_file2) {
    echo 'Not a file';
  }
?>
파일인 경우 It is file을 출력합니다.


# file() 함수 사용 예제

만약 특정 도메인에 있는 파일의 유무를 확인하기 위해서는 다른 방법을 사용해야 합니다. 그 중 하나로 file() 함수가 있습니다. 아래 예제를 참고하세요.
<?php
  $file_check = file('http://webisfree.com/.../.../');
  if ($file_check) {
    echo 'Existing.';
  }
?>

위 예제를 실행시켜 만약 서버에 해당 파일이 존재할 경우 'Existing'을 출력합니다.

! 한가지 더~ 주의할 점... 만약 자신의 PC, 즉 local에 있는 파일을 확인할 경우 경로명에 아래와 같이 점(period)이 포함되어 있는지 확인해 주세요... 예를 들어 아래 방법이 올바른 사용방법입니다.
$file_check = file_exists('/contents/test.jpg'); ( X )
$file_check = file_exists('./contents/test.jpg'); ( O )

period(.)의 여부에 따라서 검색결과가 달라지거나 에러가 발생할 수 있습니다.