downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

error_log> <debug_print_backtrace
[edit] Last updated: Fri, 23 Mar 2012

view this page in

error_get_last

(PHP 5 >= 5.2.0)

error_get_lastSon oluşan hata hakkında bilgi verir

Açıklama

array error_get_last ( void )

Son oluşan hata hakkında bilgi verir.

Dönen Değerler

Son oluşan hata hakkındaki bilgileri "type", "message", "file" ve "line" anahtarlı bir ilişkisel dizi olarak döndürür. Henüz bir hata oluşmamışsa NULL döner.

Örnekler

Örnek 1 - error_get_last() örneği

<?php
echo $a;
print_r(error_get_last());
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Array
(
    [type] => 8
    [message] => Undefined variable: a
    [file] => C:\WWW\index.php
    [line] => 2
)

Ayrıca Bakınız



error_log> <debug_print_backtrace
[edit] Last updated: Fri, 23 Mar 2012
 
add a note add a note User Contributed Notes error_get_last
drumcast at live dot com 19-Apr-2011 05:57
There is a way to get the error (if any) at specific line.

<?php

function error_get_line($line) {
   
$err = error_get_last();
    if (empty(
$err)) {
        return;
    }
   
$bt = debug_backtrace();
    if ((
$err['file'] == $bt[0]['file']) && ($err['line'] == $line)) {
        return
$err;
    }
}

// example

$str = @vsprintf('%d', 1, 2);  // this will produce a warning
// you can leave a comment in between
$err = error_get_line(__LINE__-2);
/* print_r($err); will print
Array
(
    [type] => 2
    [message] => Wrong parameter count for vsprintf()
    [file] => ....
    [line] => 16
)
*/
?>
php at joert dot net 18-Apr-2011 08:36
To simulate this function in a horrid way for php <5.2, you can use something like this.
<?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__;
    }
}
?>
dmgx dot michael at gmail dot com 06-Oct-2010 10:41
If an error handler (see set_error_handler ) successfully handles an error then that error will not be reported by this function.
Skrol29 24-Jul-2010 09:09
Function error_get_last() will return an error information even if the error is hidden because you've used character @, because of  the "error_reporting" directive in the php.ini file, or because you've used function error_reporting().

Examples:

<?php
error_reporting
(E_ALL ^ E_NOTICE);
$y = $x;
$err = error_get_last();
var_export($err);
?>
Will display: array ( 'type' => 8, 'message' => 'Undefined variable: x', 'file' => 'test.php', 'line' => 4, )

<?php
$y
= @$x;
$err = error_get_last();
var_export($err);
?>
Will display: array ( 'type' => 8, 'message' => 'Undefined variable: x', 'file' => 'test.php', 'line' => 4, )
scott at eyefruit dot com 25-Jun-2010 07:47
If you have the need to check whether an error was a fatal error  before PHP 5.2 (in my case, within an output buffer handler), you can use the following hack:

<?php
# Check if there was a PHP fatal error.
# Using error_get_last is the "right" way, but it requires PHP 5.2+. The back-up is a hack.
if (function_exists('error_get_last')) {
   
$lastPHPError = error_get_last();
   
$phpFatalError = isset($lastPHPError) && $lastPHPError['type'] === E_ERROR;
} else {
   
$phpFatalError = strstr($output, '<b>Fatal error</b>:') && ! strstr($output, '</html>');
}
?>

This is, of course, language-dependent, so it wouldn't be good in widely-distributed code, but it may help in certain cases (or at least be the base of something that would work).
iant at clickwt dot com 05-Nov-2009 02:13
Beware that registing a shutdown function to catch errors won't work if other shutdown functions throw errors.

<?php

register_shutdown_function
('cleanupObjects');
register_shutdown_function('handleFatalPhpError');

function
cleanupObjects() {
  
trigger_error('An insignificant problem', E_USER_WARNING);
}

function
handleFatalPhpError() {
  
$last_error = error_get_last();
   if(
$last_error['type'] === E_ERROR || $last_error['type'] === E_USER_ERROR) {
      echo
"Can do custom output and/or logging for fatal error here...";
   }
}

trigger_error('Something serious', E_USER_ERROR);

?>

In the above code, $last_error will contain the warning, becuase cleanupObjects() is called first.
michael at getsprink dot com 10-Aug-2009 04:15
The error_get_last() function will give you the most recent error even when that error is a Fatal error.

Example Usage:

<?php

register_shutdown_function
('handleFatalPhpError');

function
handleFatalPhpError() {
  
$last_error = error_get_last();
   if(
$last_error['type'] === E_ERROR) {
      echo
"Can do custom output and/or logging for fatal error here...";
   }
}

?>
phil at wisb dot net 04-Dec-2008 09:12
While mail at mbaierl dot com makes the point that this function isn't best for reporting the possible error condition of the most recently executed step, there are situations in which it is especially helpful to know the last error—regardless of when it occurred.

As an example, imagine if you had some code that captured the output from dynamic pages, and cached it for faster delivery to subsequent visitors. A final sanity check would be to see if an error has occurred anywhere during the execution of the script. If there has been an error, we probably don't want to cache that page.
Brad 16-Jun-2008 05:54
Like $php_errormsg, the return value of this function may not be updated if a user-defined error handler returns non-FALSE. Tested on PHP 5.2.6.

<?php
var_dump
(PHP_VERSION);
// Outputs: string(5) "5.2.6"

@trigger_error("foo");
$e=error_get_last();
var_dump($e['message']);
// Outputs: string(3) "foo"

set_error_handler(create_function('$a,$b',''));

@
trigger_error("bar");
$e=error_get_last();
var_dump($e['message']);
// Outputs: string(3) "foo"

set_error_handler(create_function('$a,$b','return false;'));

@
trigger_error("baz");
$e=error_get_last();
var_dump($e['message']);
// Outputs: string(3) "baz"
?>
Brad 16-Jun-2008 05:36
It can't be completely reset, but you can "clear" it well enough for all practical purposes:
<?php
@trigger_error("");
// do stuff...
$e=error_get_last();
if(
$e['message']!==''){
   
// An error occurred
}
?>
mail at mbaierl dot com 03-Jun-2008 11:21
This function is pretty useless, as it can not be reset, so there is no way to know if the error really happened on the line before this function call.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites