PHP DEBUGGING BEYOND ECHO
PHP MESSAGE TYPES • Notice – not a best coding practice • Warning – will probably cause errors upon execution • Error – fatal (crash) • Occur when script is interpreted (no execution - e.g., “The white screen of death”), or at script execution (run-time error halts execution)
COMMON PHP ERROR LEVELS Referenced by constants representing bit level integers to the interpreter • E_ERROR – fatal run-time error (crash) • E_WARNING – run-time warning • E_NOTICE – run-time notice • E_STRICT – interpretation-time notice • E_DEPRECATED – run-time – will not work in future PHP versions • E_ALL – all notices, warnings, and errors
DISPLAYING ERRORS • error_reporting – sets level via constant • Default: all except E_NOTICE • display_errors – displays error to users (only use in development environment) • 1 or 0 – default is 1
SCRIPT LEVEL ERROR MANAGEMENT
LOGGING ERRORS • log_errors – toggle error logging • Default: off • log_errors_max_len – length of error message in bytes • default: 1024 • 0 is unlimited • error_log – full path to log file • default: NULL (goes to server error log; not a best practice) • set log file path outside of the web root
DISPLAYING ERRORS • error_reporting – sets level via constant • Default: all except E_NOTICE • display_errors – displays error to users (only use in development environment) • 1 or 0 – default is 1
TRIGGER_ERROR
DEBUG_BACKTRACE • backtrace – sequence of function/method calls • invaluable in debugging frameworks/complex structures • returns associative array – keyed in ascending order • lowest number - last execution • each contains function/method, line number, file, class, object, and arguments!

Php debugging

  • 1.
  • 2.
    PHP MESSAGE TYPES •Notice – not a best coding practice • Warning – will probably cause errors upon execution • Error – fatal (crash) • Occur when script is interpreted (no execution - e.g., “The white screen of death”), or at script execution (run-time error halts execution)
  • 3.
    COMMON PHP ERRORLEVELS Referenced by constants representing bit level integers to the interpreter • E_ERROR – fatal run-time error (crash) • E_WARNING – run-time warning • E_NOTICE – run-time notice • E_STRICT – interpretation-time notice • E_DEPRECATED – run-time – will not work in future PHP versions • E_ALL – all notices, warnings, and errors
  • 4.
    DISPLAYING ERRORS • error_reporting– sets level via constant • Default: all except E_NOTICE • display_errors – displays error to users (only use in development environment) • 1 or 0 – default is 1
  • 6.
  • 7.
    LOGGING ERRORS • log_errors– toggle error logging • Default: off • log_errors_max_len – length of error message in bytes • default: 1024 • 0 is unlimited • error_log – full path to log file • default: NULL (goes to server error log; not a best practice) • set log file path outside of the web root
  • 8.
    DISPLAYING ERRORS • error_reporting– sets level via constant • Default: all except E_NOTICE • display_errors – displays error to users (only use in development environment) • 1 or 0 – default is 1
  • 9.
  • 10.
    DEBUG_BACKTRACE • backtrace –sequence of function/method calls • invaluable in debugging frameworks/complex structures • returns associative array – keyed in ascending order • lowest number - last execution • each contains function/method, line number, file, class, object, and arguments!

Editor's Notes

  • #4 E_ERROR – out of memory is a common oneE_NOTICE – something is probably wrong; accessing a variable that is undefined or an undefined array index – useisset() for good logicE_STRICT – old or sloppy coding, reinforces forward compatibility – e.g., mixing scopes – statically calling a non-static method.E_DEPRECATED – split() function and creating objects by reference (not needed in PHP 5)
  • #7 If there is a fatal error in the script, php.ini level error reporting supercedes the script
  • #10 E_USER_NOTICE – default for trigger_errorE_USER_WARNINGE_USER_ERROR – stops execution