2012-01-04 73 views
4

我試圖調試在我的大學服務器上運行的php腳本。當前安裝的php版本是5.1.6error_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 --I'm不知道你會得到什麼錯誤在5.1.6版本,所以你可以玩的它..

+0

完美的解決方案。 – Fuzzy 2012-10-10 15:56:28