error_get_last()的替代方案

时间:2012-01-04 07:46:02

标签: php

我正在尝试调试在我大学的服务器上运行的php脚本。安装的当前版本的PHP是5.1.6

据我了解,error_get_last()仅适用于版本>= 5.2。我正在尝试回复失败的mkdir()调用的错误详细信息,我确信这是由其中一个目录的权限引起的。我希望错误消息能够解释这个问题,但是我找不到查看错误详细信息的方法,我不认为我甚至可以访问其他php错误日志来检查那里。< / p>

我的其他选择是什么?

2 个答案:

答案 0 :(得分: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上遇到了什么错误,因此您可以随意使用它。

答案 1 :(得分:0)

看起来您可以使用$ php_errormsg保留变量将错误范围内的错误消息返回到php4。如果您没有使用用户定义的错误消息处理程序(请参阅http://php.net/manual/en/reserved.variables.phperrormsg.php)以获取更多详细信息。