2013-03-18 1 views
2

그래서 PHP에서 인기에서 mkdir() 함수는 다음 코드 나에게 경고를 던졌습니다 :Mkdir은 경고 메시지를 던집니다.

public function check_dir($dir, $create_dir = false) { 
    if (is_dir ($dir)) { 
     return true; 
    } elseif ($create_dir == true) { 
     return mkdir ($dir); 
    } 

    return false; 
} 

그 간단한 일이 일어나고 뭐죠 알고. 그래서 나는 설명하지 않을 것이다. 그러나 MKDIR() 라인에서 내가 얻을 :

경고 : MKDIR을() : 권한에 /var/www/wordpress/wp-content/themes/Aisis-Framework/AisisCore/FileHandling/File.php에서 거부 line 70

그럼에도 불구하고 그 경고와 그 이상은 생생한 경고 또는 그 사실에 대한 어떤 종류의 오류도해서는 안됩니다. 그렇다면 경고 나 치명적이지 않은 진실 또는 거짓을 반환한다고 명확하게 명시 할 때 어떻게 처리해야합니까? 당신은 적절한 찾을 수있는 방법으로 어떤 PHP 오류를 처리하기 위해 이것을 사용할 수 있습니다 http://www.php.net/set-error-handler

:

+0

당신이 당신의 서버에 대한 쓰기 권한을 얻을 수 있나요? 그걸 수정해야합니다 –

+2

사실, 당신은 * "라이브"에서 경고를 해제해야합니다 ("라이브"로 가정하면 "프로덕션"이라고 함). * 개발 중에 * 경고를 해제해서는 안됩니다 *. – meagar

+0

또한 오류/경고 메시지를 화면에 표시하지 않고 로그 파일로 보내려면 –

답변

0

당신은 일반적으로 좋은 방법은 사용자 지정 오류 처리기를 설정할 수 있습니다. 그보다 짧은 경우, 에러/경고 로깅을 해제하거나 (일반적으로 피해야 만하지만이 경우 적합 할 수 있습니다)

개인적으로 실패를 나타내는 참/거짓을 반환하는 함수가 실패 할 경우 경고를 발행 할 필요가 없다는 것에 개인적으로 동의합니다. 그러나 그것은 PHP입니다.

+0

그래서이 경우 false를 리턴하는 것을 이미 처리 했으므로 경고를 표시하지 않는 것이 적절합니까? – TheWebs

+0

나는이 경우에'@'를 사용하여 에러 억제가 괜찮을 것이라고 말할 것이다. 그것은 너무 쉽게 쉽게 남용되거나 학대당하는 것입니다. 가능하다면 그것을 피하려고 노력합니다. 그러나이 경우 API 자체가 사용자에게 불리하게 작용하는 것처럼 보이면 API를 억제하는 것이 좋습니다. – Adrian

0

당신은 프로덕션 서버에서 해제 경고를 설정해야합니다 ...하지만 더 나은 아직 .. 당신은 당신의 코드에서 허가를 확인할 수 있습니다 ...

function checkDir($dir, $createDir = false) { 
    if ($createDir === true) { 
     if (is_dir($dir)) 
      return true; 
     $baseDir = dirname($dir); 
     if (! is_dir($baseDir) || ! is_writable($baseDir)) { 
      return false; 
     } 
     return mkdir($dir); 
    } else { 
     return is_dir($dir); 
    } 
    return false; 
}