Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 200
  • Last Modified:

Error Handling

In PHP5 if you return false out of the function referenced by set_error_handler the default PHP error handler takes over and handles everything. Is there a way to do this in PHP4? Or perhaps anyone has the default error handler code written in PHP?
0
thepadders
Asked:
thepadders
  • 3
  • 2
  • 2
  • +1
1 Solution
 
ch2Commented:
Take a read here.

5.0.0      The error_types parameter was introduced.
4.3.0      Instead of a function name, an array containing an object reference and a method name can also be supplied as the error_handler.
4.0.2      Three optional parameters for the error_handler user function was introduced. These are the filename, the line number, and the context.

http://en.php.net/set_error_handler


The above link contains also an example to handle errors with the set_error_handler.

Hope it helps.
0
 
thepaddersAuthor Commented:
Yes, I understand all that but it dosen't really help answer my question unfortunatly.
0
 
ch2Commented:
I don't understand your question. My bad english, sorry. Some one will answer.
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
hernst42Commented:
No if you use a error-handler in php4 the returnvalue of your function is not evaluated by php4 and thus you need to take care of it in your error-handler (e.g. print out the error-message)
0
 
Robin HickmottSoftware DeveloperCommented:
The whole point of set_error_handler is to offer a way for you to handle errors why would you set a return value?

As an Example :
=========================================================================================

function errMsg ($err_type, $err_msg, $err_file, $err_line) {

      $errortype = array (
                1   =>  "Error",
                2   =>  "Warning",
                4   =>  "Parsing Error",
                8   =>  "Notice",
                16  =>  "Core Error",
                32  =>  "Core Warning",
                64  =>  "Compile Error",
                128 =>  "Compile Warning",
                256 =>  "User Error",
                512 =>  "User Warning",
                1024=>  "User Notice",
                2048=>  "Strict Error"
        );

        if ($err_type <= error_reporting()) {

              // We Need to Handle this Error
              echo      ("      A $errortype[$err_type] has occured in <b>$err_file</b> at line <b>$err_line</b> <br />
                          $err_msg
                    ");
              
              // Log Error
            $error_text            =            "ERROR DATE TIME : ".date("d/m/Y g:m A")."\n";
            $error_text            .=            "ERROR TYPE WAS : $error_name\n";
            $error_text            .=            "ERROR OCCURED AT : $err_file - $err_line\n";
            $error_text            .=            "ERROR WAS : $err_msg\n\n";

            error_log($error_text,3,"c:/temp/errorlog.txt");
        }
}


set_error_handler("errMsg");      // Set Error Handler

=========================================================================================
0
 
hernst42Commented:
You set an return value, so the default php-error-handler can be used (e.g. you only want to catch errors from cetrain files by your own) As php has some more options to handle errors (e.g. write to webserver-log) this can be a very usefull option.
0
 
thepaddersAuthor Commented:
Yes, hernst42 understands the reason; I guess there is no easy work around to do this, will just have to wrap the whole thing in a check for PHP5.
0
 
hernst42Commented:
We also use this method to cope and log certain application errors. before we moved completly to php we hat the following code which worked both with php4 and php5:

if (substr(phpversion(),0,1) < 5) {
    // emulate error-output in php4
    echo '<b> ' . $errortype[$errno] . "</b>: $errmsg in <b>$filename</b> on line <b>$linenum</b><br/>\n";
}

// If debugging is done also render the errors into the page (php5) thing
return false;
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now