2012-01-04 1 views
4

대학의 서버에서 실행되는 PHP 스크립트를 디버그하려고합니다. 설치된 php의 현재 버전은 5.1.6입니다.error_get_last()의 대안

error_get_last()>= 5.2에만 적용됩니다. 내가 관련된 디렉토리 중 하나의 권한에 의해 야기 된 확실한 오류 mkdir() 호출에 대한 오류 세부 정보를 표시하려고합니다. 나는 그 오류 메시지가 문제에 관해 밝혀 줄 것을 기대하고 있지만 오류 세부 사항을 볼 수있는 방법을 찾을 수 없으며 나는 다른 PHP 오류 로그에도 액세스 할 수 있다고 생각하지 않는다.

다른 옵션에는 어떤 것이 있습니까?

답변

1

당신은 당신의 자신의 오류 처리기를 만들려고 수 :

# temporary error handler 
function tempErrorHandler($errNo, $errStr, $errFile, $errLine, array $errContext) { 
    # continue to practice @ suppression 
    if (0 === error_reporting()) { 
     return false; 
    } 
    # throw it 
    throw new ErrorException($errStr, 0, $errNo, $errFile, $errLine); 
} 

# make this the error handler for now.. 
set_error_handler('tempErrorHandler'); 

# use a try..catch 
try { 
    mkdir('../directory with some permission problem../../'); 
} 
catch (ErrorException $e) { 
    # echo it out 
    echo $e->getMessage(); 
    # or do whatever you want with it: this part is just an EXAMPLE 
    $errMsg = $e->getMessage(); 
    $isPermissionDenied = strpos($errMsg, 'Permission denied'); 
    if ($isPermissionDenied) { 
     # do something 
    } 
} 

# revert to previous error handler 
restore_error_handler(); 

코멘트를주의하십시오 # or do whatever you want with it: this part is just an EXAMPLE 그냥 놀러 수 있도록, 버전 5.1.6에서 무엇을 얻을 오류 --I'm 확실하지 그것 ..

+0

완벽한 솔루션입니다. – Fuzzy

0

당신은 $ php_errormsg 예약 변수를 사용하여 php4에 오류 범위 내에서 오류 메시지에 액세스 할 수있는 것 같습니다. 자세한 내용은 사용자 정의 오류 메시지 처리기 (http://php.net/manual/en/reserved.variables.phperrormsg.php 참조)를 사용하지 않는 경우