PHP에 파일이 있는지 확인하는 방법

PHPz
풀어 주다: 2023-08-26 12:32:02
원래의
1760명이 탐색했습니다.

PHP에 파일이 있는지 확인하는 방법

PHP에서 파일을 이동하거나 일부 데이터를 저장해야 하는 경우가 많습니다. 두 경우 모두 파일이 존재하는지 미리 알면 예상치 못한 동작을 방지하는 데 도움이 될 수 있습니다.

PHP에는 파일과 관련된 다양한 유형의 쿼리를 처리하는 다양한 기능이 제공됩니다. 이 튜토리얼에서는 상황에 가장 적합한 기능을 선택할 수 있도록 이러한 모든 기능에 대한 간략한 개요를 제공합니다.

파일 존재 여부 확인의 중요성

많은 경우 다른 작업을 수행하기 전에 파일이 존재하는지 확인하는 것이 중요할 수 있습니다. 귀하의 웹사이트에서 사용자가 나중에 액세스하기 위해 이미지 파일을 서버에 업로드할 수 있다고 가정해 보겠습니다. 많은 사용자가 서비스를 사용하여 여러 파일을 자주 업로드하는 경우 항상 파일 이름 충돌 가능성이 있다고 가정하는 것이 타당합니다.

이 경우 사용자가 최근 업로드한 파일을 저장하려는 위치에 이미 다른 파일이 존재하는지 확인하는 것이 중요합니다. 그런 다음 파일 이름을 다른 이름으로 바꾸거나 업로드하면 기존 파일을 덮어쓴다는 사실을 사용자에게 알리는 등의 조치를 취할 수 있습니다.

PHP에서 파일에 데이터를 추가해야 하는 또 다른 시나리오를 고려해 보겠습니다. 모든 데이터를 쓰기 위해 생성한 파일이 어떤 이유로 삭제된 경우 file_put_contents()와 같은 함수는 지정된 이름의 새 파일을 생성하고 새로 생성된 파일에 데이터를 저장합니다. 어떤 경우에는 이것이 바람직할 수도 있지만 항상 그런 것은 아닙니다. 따라서 데이터 쓰기를 시작하기 전에 이미 파일이 존재할 것으로 예상했다면 미리 파일이 존재하는지 확인하는 것이 좋습니다.

PHP에 파일이 있는지 확인

세 가지 다른 기능을 사용하여 PHP에 파일이 있는지 확인할 수 있습니다.

첫 번째 기능은 file_exists()입니다. 이 함수는 파일이 있는 경로인 하나의 매개변수를 허용합니다. 기존 파일 및 디렉터리에 대해 true를 반환한다는 점을 기억하세요. 이는 귀하의 요구에 충분할 수도 있고 충분하지 않을 수도 있습니다.

지정한 경로가 디렉터리가 아닌 파일을 가리키는지 확인하려면 is_file() 函数。同样,您可以使用 is_dir() 함수를 사용하여 지정한 경로가 존재하고 디렉터리를 가리키는지 확인하는 것이 좋습니다.

으아악 산출 으아악

위의 예에서는 의도적으로 디렉터리 중 하나의 이름을 squares.zip로 지정하여 직접 확인하는 것이 중요하며 제공된 파일 이름이 실제로 파일 이름이나 디렉터리라고 가정하지 않는 것이 중요함을 보여줍니다.

상위 디렉터리에 올바른 권한이 없더라도 경로가 실제로 존재한다는 점을 기억하는 것이 중요합니다. is_file()is_dir() 都将返回 false

파일이 존재하고 읽기 및 쓰기가 가능한지 확인하세요

이라는 다른 두 가지 기능을 사용하면 파일 존재 여부를 확인하는 것 외에도 파일에 대한 추가 정보를 얻을 수 있습니다. is_read()is_writable()

이름에서 알 수 있듯이

함수는 파일이나 디렉터리가 존재하고 쓰기 가능한지 두 가지도 확인합니다. is_read() 函数将检查两件事:第一,文件或目录确实存在,第二,文件可读。同样, is_writable() 으아악

산출 으아악 이 두 함수의 반환 값을 해석할 때는 주의하시기 바랍니다. 예를 들어

가 false를 반환하면 가장 먼저 본능적으로 쿼리 중인 파일을 읽을 수 없다고 생각하게 됩니다. 그러나 이 함수는 파일이 존재하지 않는 경우에도 false를 반환합니다. 이러한 기능의 이러한 측면을 항상 염두에 두는 것이 중요합니다. is_read()

캐시된 결과에 주의하세요

5개 함수, 즉

, is_file(), is_dir(), file_exists()is_file()is_dir()is_read()is_writeable()—已缓存。这意味着重复调用函数(例如 is_file()is_writeable()을 모두 호출하여 반환되는 값 반환 — 캐시되었습니다. 즉, 함수(예: is_file())를 반복적으로 호출하면 오래된 결과가 표시될 수 있습니다.

PHP는 성능을 향상시키기 위해 이러한 기능의 결과를 캐시합니다. 이렇게 하면 동일한 파일을 쿼리하는 여러 호출이 더 빠르게 실행됩니다. 그러나 스크립트 실행 중에 파일이 변경되더라도 반환 값은 동일하게 유지됩니다.

이미 존재하는 파일에 대한 결과만 캐시됩니다. 이는 존재하지 않는 파일의 경우 파일이 삭제된 경우에도 is_file() 将继续返回 false,但一旦创建文件,就会开始返回 true。另一方面,对于第一次调用期间存在的文件,该函数将继续返回 true 함수가 호출된다는 의미입니다.

으아악

실제로 존재하는 파일에 대해 위의 코드 조각을 실행한 다음 스크립트가 기다리는 동안 수동으로 삭제하는 경우 is_file() 仍将返回 true。不过,在再次查询文件是否存在之前,只需调用 clearstatcache()를 호출하면 올바른 결과를 얻을 수 있습니다.

输出
"squares.txt" is indeed a file.
"squares.txt" is indeed a file.
The file probably no longer exists.
로그인 후 복사

要记住的另一件事是,调用 unlink() 会自动清除缓存,因此稍后调用 is_file() 等函数时会得到新的结果。

最终想法

本教程首先介绍了检查 PHP 中文件是否存在的重要性。之后,我们了解了可用于检查 PHP 中文件是否存在的不同函数。我们还了解了其中一些功能可能具有的优点和缺点。

正如我在最后提到的,PHP 将缓存其中一些函数调用的结果以提高性能。因此,请确保在对这些文件执行重要操作之前清除缓存。

위 내용은 PHP에 파일이 있는지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿