richardoneill.com.au » Articles » Handling Errors in PHP

Handling Errors in PHP

27 June 2007 PHP, Programming

PHP errors are ugly and should never be shown to your users. Luckily with PHP we can handle errors our own way using the set_error_handler function.

I'll start by defining the error handling function which will write the error to a log file and stop execution.


function handleError($level, $error, $file, $line)
{

  if ($logfile = fopen('log.txt', 'a'))
  {
    fwrite($logfile, date("F j, Y, g:i a") ." $error on line $line in $filen");
    fclose($logfile);
  }

  die('An error has occured.');

}

Then set it as the error handling function.

set_error_handler('handleError');

Trigger an error to see if it works.

echo 100 / 0;

You could also get your function to notify you via email. Or you could forget about logging, and just display better looking errors...


function handleError($level, $error, $file, $line)
{

  $errorhtml = '<div style="border: 4px solid #bfbfbf; font-size: 12px; font-family: arial, sans-serif; padding: 1px">';
  $errorhtml .= '<div style="background-color: #a3503f; color: #ffffff; padding: 3px;">ERROR</strong></div>';
  $errorhtml .= $error.'<br />';
  $errorhtml .= 'Line: '.$line.'<br />';
  $errorhtml .= 'File: '.$file;
  $errorhtml .= '</div>';

  echo $errorhtml;

}

php error

No

You must not ever EVER show PHP errors to end users. It's a security risk. Disable errors and enable logging.

Richard

That's right. I should have mentioned that displaying errors is only ok in a testing/development environment.

Comment on this article
Name
Website
Canberra Web Design