This tutorial provides a solution to get email alerts, when a unhandled error occurs. For this tutorial, we are using WordPress.
Imagine you created a php application and it’s running fine. A couple of days later, a user complains about an error which you’re totally unaware of. Such unhandled errors are very common in php applications. So, to find these issues, we are going to send email notifications whenever an error occurs.
Step 1. First of all we need to identify a common application file that include at top of application. in this case the file is “wp-config.php” at the root of your wordpress hosting directory.
Step 2. Let’s add the following line of code in this file under php tag.
set_error_handler('errorHandler'); // this line of code sets an error handler custom function to handle any php error. And here we pass our custom function that name “errorHandler”
function createTable($array){
if(is_array($array) && count($array)>0){
$errorContent = "<table border = 1><tr><td>";
foreach ($array as $key => $val) {
$errorContent .= $key . "</td><td>";
if(is_array($val) && count($val)>0){
$errorContent .= createTable(json_decode(json_encode($val),true)) ;
}else{
$errorContent .= print_r($val, true) ;
}
}
$errorContent .= "</td></tr></table>";
return $errorContent;
}
return '';
}
/**
*
* @param type $errorNumber // This parameter returns error number.
* @param type $errorString // This parameter returns error string.
* @param type $errorFile // This parameter returns path of file in which error found.
* @param type $errorLine // This parameter returns line number of file in which you get an error.
* @param type $errorContext // This parameter return error context.
*/
function errorHandler($errorNumber, $errorString, $errorFile, $errorLine, $errorContext) {
$emailAddress = 'example@example.com';
$emailSubject = 'Error on my Application';
$emailMessage = '<h2>Error Reporting on :- </h2>[' . date("Y-m-d h:i:s", time()) . ']';
$emailMessage .= "<h2>Error Number :- </h2>".print_r($errorNumber, true).'';
$emailMessage .= "<h2>Error String :- </h2>".print_r($errorString, true).'';
$emailMessage .= "<h2>Error File :- </h2>".print_r($errorFile, true).'';
$emailMessage .= "<h2>Error Line :- </h2>".print_r($errorLine, true).'';
$emailMessage .= "<h2>Error Context :- </h2>".createTable($errorContext);
$headers = "MIME-Version: 1.0" . "rn";
$headers .= "Content-type:text/html;charset=UTF-8" . "rn";
mail($emailAddress, $emailSubject, $emailMessage, $headers); // you may use SMTP, default php mail service OR other email sending process
}
Step 3. Now save the file and upload on server.
Whenever we got any error in wordpress then above code will send an email to given email-address (example@example.com). You can use the above code on production websites to improve application performance and track all errors that’s are missed.
Similarly we can use above code in drupal, joomla, and many other content management systems.
Common config files on other platforms are listed below:
CMS/application name | Location of common file |
---|---|
4Images Gallery | /config.php |
B2 Evolution | /conf/_basic_config.php |
Boonex Dolphin | /inc/header.inc.php |
Concrete5 | /config/site.php |
Coppermine Photo Gallery | /include/config.inc.php |
Crafty Syntax Live Help | /config.php |
Cube Cart | /includes/global.inc.php |
dotProject | /includes/config.php |
Drupal | /sites/default/settings.php |
e107 | /e107_config.php |
FAQMasterFlex | /faq_config.php |
Gallery | /config.php |
Geeklog | /db-config.php or /siteconfig.php or /lib-common.php |
glfusion | /private/db-config.php |
Hotaru | /hotaru_settings.php |
Joomla | /configuration.php |
LiveSite | /livesite/config.php |
LifeType | /config/config.properties.php |
Mambo | /configuration.php |
Marketecture | /include/config.php |
MODx | /manager/includes/config.inc.php |
Moodle | /config.php |
MyBB | /inc/config.php |
Noahs Classifieds | /app/config.php |
Nucleus | /config.php |
ocPortal | /info.php |
OpenCart | /config.php or /admin/config.php |
osCommerce | /includes/configure.php or /admin/includes/configure.php |
Oxwall | /ow_includes/config.php |
PHP-Nuke | /config.php |
phpBB | /config.php |
phpFormGenerator | /index.php or /mysql.class.php |
phpFreeChat | /forms/admin/config.inc.php (only if you have saved form input to a database) |
PHPlist | /config/config.php |
phpMyDirectory | /defaults.php |
phpWCMS | /include/inc_conf/conf.inc.php |
phpWebSite | /conf/config.php |
PhpWiki | /admin.php or /lib/config.php |
Pligg | /libs/dbconnect.php |
Post-Nuke | /config.php |
PrestaShop | /config/settings.inc.php |
Saurus CMS | /config.php |
ShopSite | /includes/configure.php or /admin/includes/configure.php |
Siteframe | /config.php |
Simple Machines Forum | /Settings.php |
Soholaunch | /sohoadmin/config/isp.conf.php |
SugarCRM | /config.php |
Textpattern | /textpattern/config.php |
TikiWiki | /db/local.php |
Tomato Cart | /includes/configure.php |
TYPO3 | /typo3conf/localconf.php |
WebCalendar | /includes/settings.php |
WHMCS | /configuration.php |
WordPress | /wp-config.php |
X7 Chat | /config.php |
Xoops | /mainfile.php |
Zen Cart | /includes/configure.php or /admin/includes/configure.php |
Zikula | /config.php |