ERROR REPORTING
BY: IQRA BALOCH
What is error?
• An error is a type of mistake. We can say an error is a condition of
having incorrect or false knowledge or an error is defined as an
unexpected, invalid program state from which it is impossible to
recover.
• Error can also be defined as “a deviation from accuracy or
correctness”. A “mistake” is an error caused by fault: the fault being
misjudgment, carelessness or forgetfulness. An error message with
filename, like number and a message describing the error is sent to
be the browser.
Types of error
There are 12 unique error types, which can
be grouped into 3 main categories:
• Informational (Notices)
• Actionable (Warnings)
• Fatal (Runtime)
Informational Errors
• Harmless problem, non-critical errors that PHP encounters while
executing a script. In the notice error execution of the script does not
stop.
e.g. use of an undefined variable, defining a string without quotes,
Referencing non-existent array keys etc.
Actionable Errors
• Indicate that something clearly wrong has happened and that action
should be taken.
e.g. file not present, database not available, missing function
arguments, etc.
Fatal Errors
• Something so terrible has happened during execution of your script
that further processing simply cannot continue.
e.g. parsing error, calling an undefined function, require() when the
file does not exist etc.
Identifying Errors
notice
warning
fatal
Enabling errors
• display_errors = On
• error_reporting = ~E_ALL
Customizing Error Handling
• Generally, how PHP handles errors is defined by various constants in
the installation (php.ini).
• There are several things you can control in your scripts however..
1. Set error reporting settings
error_reporting($level)
This function can be used to control which errors are displayed, and
which are simply ignored. The effect only lasts for the duration of the
execution of your script.
1. Set error reporting settings
<?php
// Turn off all error reporting
error_reporting(0);
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
error_reporting(E_ALL ^ E_NOTICE);
// Report ALL PHP errors
error_reporting(E_ALL);
?>
1. Set error reporting settings
• Hiding errors is NOT a solution to a problem.
• It is useful, however, to hide any errors produced on a live server.
• While developing and debugging code, displaying all errors is highly
recommended!
2. Suppressing Errors
• The special @ operator can be used to suppress function errors.
• Any error produced by the function is suppressed and not displayed
by PHP regardless of the error reporting setting.
2. Suppressing Errors
• Error suppression is NOT a solution to a problem.
• It can be useful to locally define your own error handling
mechanisms.
• If you suppress any errors, you must check for them yourself
elsewhere.
3. Custom Error Handler
• You can write your own function to handle PHP errors in any way you
want.
• You simply need to write a function with appropriate inputs, then
register it in your script as the error handler.
• Function called set_error_handler(), it allows to divert all PHP errors
to a custom function that are defined, instead of sending them to the
default handler.
3. Custom Error Handler
• Custom function must be capable of accepting a minimum of two
mandatory arguments:
o Error type
o Message
• and up to three additional arguments:
o File name
o Line number
o Context
• These arguments are then used to create an error page that is
friendlier and more informative than PHP's standard one-line error
message
3. Custom Error Handler
function err_handler(
$errcode,$errmsg,$file,$lineno, $context) {
echo ‘An error has occurred!<br />’;
echo “file: $file<br />”;
echo “line: $lineno<br />”;
echo “Problem: $errmsg”;
echo “Variable State: $contexts”;
return true;
}
3. Custom Error Handler
• The function then needs to be registered as your custom error
handler:
set_error_handler(‘err_handler’);
• You can ‘mask’ the custom error handler so it only receives certain
types of error. e.g. to register a custom handler just for user triggered
errors:
set_error_handler(‘err_handler’,
E_USER_NOTICE | E_USER_WARNING | E_USER_ERROR);
4. Pulling the Trigger
• PHP allows you to use its built-in error handling system to raise your
own custom errors as well.
• This is accomplished via a function named trigger_error(), which
allows you to raise any of the three error types reserved for users:
E_USER_NOTICE, E_USER_WARNING and E_USER_ERROR.
• When these errors are triggered, PHP's built-in handler will
automatically wake up to handle them.
4. Pulling the Trigger
$db = @mysql_connect($h,$u,$p);
if (!$db) {
trigger_error(‘blah’,E_USER_ERROR);
}
Review
• Various different error types exist in PHP.
• The error handling system is highly flexible, and your own error
handling methods can be developed.

Error reporting in php

  • 1.
  • 2.
    What is error? •An error is a type of mistake. We can say an error is a condition of having incorrect or false knowledge or an error is defined as an unexpected, invalid program state from which it is impossible to recover. • Error can also be defined as “a deviation from accuracy or correctness”. A “mistake” is an error caused by fault: the fault being misjudgment, carelessness or forgetfulness. An error message with filename, like number and a message describing the error is sent to be the browser.
  • 3.
    Types of error Thereare 12 unique error types, which can be grouped into 3 main categories: • Informational (Notices) • Actionable (Warnings) • Fatal (Runtime)
  • 4.
    Informational Errors • Harmlessproblem, non-critical errors that PHP encounters while executing a script. In the notice error execution of the script does not stop. e.g. use of an undefined variable, defining a string without quotes, Referencing non-existent array keys etc.
  • 5.
    Actionable Errors • Indicatethat something clearly wrong has happened and that action should be taken. e.g. file not present, database not available, missing function arguments, etc.
  • 6.
    Fatal Errors • Somethingso terrible has happened during execution of your script that further processing simply cannot continue. e.g. parsing error, calling an undefined function, require() when the file does not exist etc.
  • 7.
  • 8.
    Enabling errors • display_errors= On • error_reporting = ~E_ALL
  • 9.
    Customizing Error Handling •Generally, how PHP handles errors is defined by various constants in the installation (php.ini). • There are several things you can control in your scripts however..
  • 10.
    1. Set errorreporting settings error_reporting($level) This function can be used to control which errors are displayed, and which are simply ignored. The effect only lasts for the duration of the execution of your script.
  • 11.
    1. Set errorreporting settings <?php // Turn off all error reporting error_reporting(0); // Report simple running errors error_reporting(E_ERROR | E_WARNING | E_PARSE); // Reporting E_NOTICE can be good too (to report uninitialized // variables or catch variable name misspellings ...) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // Report all errors except E_NOTICE error_reporting(E_ALL ^ E_NOTICE); // Report ALL PHP errors error_reporting(E_ALL); ?>
  • 12.
    1. Set errorreporting settings • Hiding errors is NOT a solution to a problem. • It is useful, however, to hide any errors produced on a live server. • While developing and debugging code, displaying all errors is highly recommended!
  • 13.
    2. Suppressing Errors •The special @ operator can be used to suppress function errors. • Any error produced by the function is suppressed and not displayed by PHP regardless of the error reporting setting.
  • 14.
    2. Suppressing Errors •Error suppression is NOT a solution to a problem. • It can be useful to locally define your own error handling mechanisms. • If you suppress any errors, you must check for them yourself elsewhere.
  • 15.
    3. Custom ErrorHandler • You can write your own function to handle PHP errors in any way you want. • You simply need to write a function with appropriate inputs, then register it in your script as the error handler. • Function called set_error_handler(), it allows to divert all PHP errors to a custom function that are defined, instead of sending them to the default handler.
  • 16.
    3. Custom ErrorHandler • Custom function must be capable of accepting a minimum of two mandatory arguments: o Error type o Message • and up to three additional arguments: o File name o Line number o Context • These arguments are then used to create an error page that is friendlier and more informative than PHP's standard one-line error message
  • 17.
    3. Custom ErrorHandler function err_handler( $errcode,$errmsg,$file,$lineno, $context) { echo ‘An error has occurred!<br />’; echo “file: $file<br />”; echo “line: $lineno<br />”; echo “Problem: $errmsg”; echo “Variable State: $contexts”; return true; }
  • 18.
    3. Custom ErrorHandler • The function then needs to be registered as your custom error handler: set_error_handler(‘err_handler’); • You can ‘mask’ the custom error handler so it only receives certain types of error. e.g. to register a custom handler just for user triggered errors: set_error_handler(‘err_handler’, E_USER_NOTICE | E_USER_WARNING | E_USER_ERROR);
  • 19.
    4. Pulling theTrigger • PHP allows you to use its built-in error handling system to raise your own custom errors as well. • This is accomplished via a function named trigger_error(), which allows you to raise any of the three error types reserved for users: E_USER_NOTICE, E_USER_WARNING and E_USER_ERROR. • When these errors are triggered, PHP's built-in handler will automatically wake up to handle them.
  • 20.
    4. Pulling theTrigger $db = @mysql_connect($h,$u,$p); if (!$db) { trigger_error(‘blah’,E_USER_ERROR); }
  • 21.
    Review • Various differenterror types exist in PHP. • The error handling system is highly flexible, and your own error handling methods can be developed.