2014-09-18 3 views
0

opendir() 폴더에 액세스 할 수없는 경우 PHP 경고 메시지를 표시합니다.PHP 경고가없는 폴더 열기

내가 is_dir 사용하지만 수있는 폴더가 그 동안 삭제됩니다 경우 :

if(is_dir($some_dir)){ 
    // HERE, DELETED, GONE :(
    $d = opendir($some_dir); 
    // warning !!0 
    } 

나의 전체 오류 처리 코드를 망쳐 놨을 경고.

경고를받지 않고 파일 조작을 수행 할 수있는 방법이 있습니까? FALSE 결과가 파일에 액세스 할 수없는 것을 이해하기에 충분하며, 그 이유는 나도 경고 :(

사용 말해 @ 말아주십시오 있는가 이해가 안 돼요. 더 좋은 방법

+0

이 뭔가 있을까 너 쓸 수있어? http://stackoverflow.com/questions/1241728/can-i-try-catch-a-warning – Kai

+0

시도해보고 사용해 볼 수 있습니까? –

+0

[opendir()] (http://php.net/manual/en/function.opendir.php)의 설명서에 @ 솔루션이 명시되어 있습니다. 그러나 [flock()] (http://php.net/manual/en/function.flock.php)을 통해 얻을 수있는 여러 프로세스를 동기화해야하는 것처럼 보입니다. – andy

답변

1
$d = @opendir($some_dir); 
에게이 있어야한다

@ 함수 침묵 오류 전에 함수를 올릴 수있다. (작동하지 않는 경우 거짓)이 근무 또는하지 않을 경우

그런 다음 당신이보고 $d을 테스트 할 수 있습니다.

을 아 맞다, 감사에게 의견을, 영업 이익은하지 했나요 ab에게 말하기 밖으로 @ 내 나쁜.

또 다른 가능성은 php가 경고를 발생시키지 않도록 PHP 구성을 변경하는 것입니다.

+0

끔찍한 프로그래밍 연습을하고이 제안을하지 말라고 특별히 언급했습니다. –

+0

@MikeBrant는 무엇을 제안합니까? – PeeHaa

0

변수가 처음 설정되어 있는지 확인하여 다음을 시도하십시오. 당신이 사용하지 않는 경우

if(isset($some_dir)): 
    if(is_dir($some_dir)): 
    // HERE, DELETED, GONE :(
    $d = opendir($some_dir); 
    // warning !!0 
    endif; 
endif; 
0

이 코드

if(is_dir($some_dir)){ 
    // HERE, DELETED, GONE 
    $d = @opendir($some_dir); 
    // warning 
    } 

시도 '@'다음/체크 $의 some_dir에 대한 디렉토리 경로를 확인해야하는 것은 올바른