有没有办法在php4中获取最后一个错误

时间:2011-07-01 14:09:46

标签: error-handling php4

PHP 5有error_get_last。有没有办法在PHP4.3中完全或至少部分地复制相同的功能?

2 个答案:

答案 0 :(得分:3)

PHP manual中撕掉(由joert dot net的php提供):

<?php
if( !function_exists('error_get_last') ) {
    set_error_handler(
        create_function(
            '$errno,$errstr,$errfile,$errline,$errcontext',
            '
                global $__error_get_last_retval__;
                $__error_get_last_retval__ = array(
                    \'type\'        => $errno,
                    \'message\'        => $errstr,
                    \'file\'        => $errfile,
                    \'line\'        => $errline
                );
                return false;
            '
        )
    );

    function error_get_last() {
        global $__error_get_last_retval__;
        if( !isset($__error_get_last_retval__) ) {
            return null;
        }
        return $__error_get_last_retval__;
    }
}
?>

答案 1 :(得分:0)

是的,但你必须做一些编程,你需要附加错误处理程序

$er_handler = set_error_handler("myErrorHandler");

但在此之前你需要写下你的“myErrorHandler”

function myErrorHandler($errNumber, $errString, $errFile, $errLine)
{
  /*now add it to session so you can access it from anywhere, or if you have class with the static variable you can save it there */

 $_SESSION["Error.LastError"] = $errNumber . '<br>' . $errString . '<br>' . $errFile . '<br>' . $errLine;
  }

现在发生错误时,您可以通过

获取错误
if(isset($_SESSION["Error.LastError"]))
  $str = $_SESSION["Error.LastError"];

现在要复制你需要创建函数的方法

function get_last_error()
{
$str = "";
if(isset($_SESSION["Error.LastError"]))
      $str = $_SESSION["Error.LastError"];
return $str;
}