PHP에서 스트림 리소스 (또는 파일 포인터, 핸들 또는 원하는 모든 호출)가 읽기 또는 쓰기 가능한지 확인하려면 어떻게해야합니까? 예를 들어 리소스가 열리거나 생성 된 방법에 대해 알지 못하는 상황에 직면 한 경우이를 읽을 수 있는지 어떻게 확인합니까? 쓰기가 가능한지 어떻게 확인합니까?PHP 스트림 리소스가 읽기 가능하거나 쓰기 가능한지 확인하는 방법은 무엇입니까?
내가 수행 한 테스트 (PHP 5.3.3을 사용하는 일반 텍스트 파일 만 사용)에 따라 fread()
은 리소스를 읽을 수 없을 때 어떤 수준의 오류도 발생시키지 않습니다. 빈 문자열 만 반환하지만 빈 파일의 경우에도 그렇게합니다. 그리고 이상적으로는 리소스 자체를 수정하지 않는 검사를하는 것이 좋습니다. 읽기를 시도하여 자원을 읽을 수 있는지 테스트하는 것은 포인터의 위치를 변경합니다.
반대로, fwrite()
은 리소스에 쓸 수없는 경우 어떤 수준의 오류도 발생시키지 않습니다. 그냥 0을 반환합니다. 파일에 특정 수의 바이트를 쓰려고 시도하고 fwrite()
이 0을 반환하면 뭔가 잘못되었음을 알게되므로 약간 더 유용합니다. 하지만 여전히 이상적인 방법은 아닙니다. 필기 쓰기 전에 쓰기가 가능한지 알아야 쓰기가 어려워 지는지 확인하는 것이 훨씬 낫습니다.
또한 이상적으로는 파일뿐만 아니라 모든 종류의 스트림 리소스에서 작동해야합니다.
이것이 가능합니까? 이것과 같은 것이 존재합니까? 나는 유용한 것을 찾을 수 없었다. 귀하의 답변에 미리 감사드립니다.
, 모두 [' fread()'] (http://php.net/fread)와 ['fwrite()'] (http://php.net/fwrite) 각각의 문서 페이지에 따라 실패하면'bool (false)'를 반환한다. ....하지만 PHP 5.3.5에서는 발생하지 않습니다. –