Home arrow PHP arrow Page 4 - Error Handling In PHP (part 2)

Turning Up The Heat - PHP

The first part of this article demonstrated basic errorhandling in PHP, explaining the various error types and illustrating theprocess of building a custom error handler. But that's just the tip ofthe iceberg - this concluding part goes a step further, showing you totrigger your own errors, and log error messages to a file, database oremail address.

TABLE OF CONTENTS:
  1. Error Handling In PHP (part 2)
  2. Raising Hell
  3. Rolling Back
  4. Turning Up The Heat
  5. Of Form And Function
  6. Buffer Zone
  7. Back To Class
  8. Endgame
By: icarus, (c) Melonfire
Rating: starstarstarstarstar / 11
April 09, 2002

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement
In addition to catching and displaying errors, PHP's error-handling API also allows you to log errors, either to a default error log, to any other file or as an email message.

The error_log() function needs a minimum of two arguments: the error message to be logged, and an integer indicating where the message should be sent. There are three possible integer values in PHP 4.x:

0 - send the message to the system log file (note that you must have logging enabled and a log file specified in your PHP configuration for this to work);

1 - send the message to the specified email address;

3 - send the message to the specified file;

Here's a trivial example which demonstrates how this works:

<?php // set a variable $temp = 101.6; // test it and log an error // this will only work if // you have "log_errors" and "error_log" set in your php.ini file if ($temp > 98.6) { error_log("Body temperature above normal.", 0); } ?>
Now, if you look at the system log file after running the script, you'll see something like this:

[28-Feb-2002 15:50:49] Body temperature above normal.
You can also write the error message to a file,

<?php // set a variable $temp = 101.6; // test it and log an error if ($temp > 98.6) { error_log("Body temperature above normal.", 3, "a.out"); } ?>
or send it out as email.

<?php // set a variable $temp = 101.6; // test it and log an error if ($temp > 98.6) { error_log("Body temperature above normal.", 1, "administrator@this.body.com"); } ?>
It's possible to combine this error logging facility with a custom error handler to ensure that all script errors get logged to a file. Here's an example which demonstrates this:

<?php // custom handler function eh($type, $msg, $file, $line) { // log all errors error_log("$msg (error type $type)", 0); // if fatal error, die() if ($type == E_USER_ERROR) { die($msg); } } // report all errors error_reporting(E_ALL); // define custom handler set_error_handler("eh"); // let's go through the rogues gallery // this will trigger E_NOTICE (undefined variable) echo $someVar; // this will trigger E_WARNING (missing file) include("common.php"); // this will trigger E_USER_NOTICE trigger_error("Time for lunch"); // this will trigger E_USER_WARNING trigger_error("Body temperature above normal", E_USER_WARNING); // this will trigger E_USER_ERROR trigger_error("No brain activity", E_USER_ERROR); ?>
And here's the output that gets logged to the system log file:

[28-Feb-2002 16:15:06] Undefined variable: someVar (error type 8) [28-Feb-2002 16:15:06] Failed opening 'common.php' for inclusion (include_path='.;') (error type 2) [28-Feb-2002 16:15:06] Time for lunch (error type 1024) [28-Feb-2002 16:15:06] Body temperature above normal (error type 512) [28-Feb-2002 16:15:06] No brain activity (error type 256)


 
 
>>> More PHP Articles          >>> More By icarus, (c) Melonfire
 

blog comments powered by Disqus
   

PHP ARTICLES

- PHP Closures as View Helpers: Lazy-Loading F...
- Using PHP Closures as View Helpers
- PHP File and Operating System Program Execut...
- PHP: Effects of Wrapping Code in Class Const...
- PHP: Building Concrete Validators
- Sanitizing Input with PHP
- Executing Shell Commands with PHP
- Handling File Data with PHP
- File Security and Resources with PHP
- ArrayObject PHP Class Examples
- ArrayObject PHP Class: An Introduction
- Getting File System Data with PHP
- PHP Tools for Working with the File and Oper...
- Working with the File and Operating System w...
- PHP Proxy Patterns: Completing a Blog


© 2003-2012 by Developer Shed. All rights reserved. DS Cluster 5 - Follow our Sitemap

Dev Shed Tutorial Topics: