PHP의 unlink()
이 기본적으로 예외를 지원하지 않기 때문에 이에 대한 래퍼 함수를 만들고 있습니다. 주어진 파일이 존재하지 않기 때문에 삭제할 수 없으면 FileNotFoundException
을 던져야합니다.PHP에서 특정 오류를 정확하게 식별하는 방법은 무엇입니까?
이 경우 unlink()
이 던진 오류가 파일 누락 등으로 인해 발생했는지 확인해야합니다.
이 사용자 정의에 대한 내 테스트 버전은 기능 삭제할 수 있습니다 : $errLevel
내가 얻을 $errString
를 들어
public function deleteFile($path){
set_error_handler(function($errLevel, $errString){
debug($errLevel);
debug($errString);
});
unlink($path);
restore_error_handler();
}
을 (E_WARNING)와 링크 해제 (/ tmp를/fooNonExisting) : 해당 파일이나 디렉토리
오히려 대담한 접근 방식은 다음과 같이 될 것이다 :
if(strpos($errString, 'No such file or directory') !== false) {
throw new FileNotFoundException();
};
질문 1 : 다른 PHP 버전에서 오류 문자열이 얼마나 많이 의존 할 수 있습니까? 질문 2 : 훨씬 좋은 방법이 있습니까?
예, 좋은 해결책입니다. 그러나 이것은 잘못된 파일 사용 권한과 같은 다른 모든 유형의 문제도 묻을 것입니다. 차라리 "파일을 찾을 수 없음"을 예외로 변환하고 싶습니다. – pixelistik
나는 내 대답을 업데이트했다. – powtac
'else' 블록에서'unlink()'를 사용하여 솔루션을 수정했습니다 (검토 대기 중). 잘못된'@'부분을 제거 할 수 있습니다. 아마도이 기술을 사용할 것이지만 초기 오류 처리/식별 문제에 대한 다른 대답을 기다리게하십시오. – pixelistik