Sentry is a powerful error-tracking tool that helps you monitor and fix crashes in real-time. In this post, we’ll walk through how to integrate Sentry with a CodeIgniter 3 application and log all errors to sentry.
Prerequisites
Before you begin, make sure you have:
- A Sentry account with a created project.
- A working CodeIgniter 3 setup.
- PHP 7.2+ (recommended).
- Composer installed.
Step 1: Install Sentry SDK via Composer
Open your terminal and run:
composer require sentry/sentry
If you haven’t initialized Composer yet in your CI3 project, run
composer init
first.
Step 2: Enable and Configure Hooks
To enable hook in CodeIgniter 3, Edit your application/config/config.php
and update the 'enable_hooks'
variable to TRUE
if it is FALSE
.
$config['enable_hooks'] = TRUE;
Now, register the sentry hook into the application/config/hooks.php
file:
$hook['pre_system'][] = array(
'class' => '',
'function' => 'init_sentry', // Function to be called
'filename' => 'sentry.php', // Filename of the hook
'filepath' => 'hooks'
);
As mentioned in the hook file, create application/hooks/sentry.php
and add the following code:
use Sentry\ClientBuilder;
use Sentry\State\Hub;
function init_sentry()
{
require_once APPPATH . '../vendor/autoload.php';
\Sentry\init([
'dsn' => 'https://your-dsn@sentry.io/project-id',
'environment' => ENVIRONMENT,
'error_types' => E_ALL & ~E_NOTICE, // Adjust as needed
]);
}
Replace 'https://your-dsn@sentry.io/project-id'
with your actual Sentry DSN.
Step 3: Capture Errors or Messages
Now, you can log errors to sentry using multiple ways as follows,
Manually Capture Exceptions
try {
// Your code here
} catch (Exception $e) {
\Sentry\captureException($e);
}
Manually Capture Messages
\Sentry\captureMessage('Something happened!', \Sentry\Severity::warning());
Step 4: Automatically Capture Uncaught Exceptions
You can log all uncaught exceptions by extending the CI Exception class.
Create a new exception file at application/core/MY_Exceptions.php
and add the following content in it:
class MY_Exceptions extends CI_Exceptions
{
public function show_exception($exception)
{
if (class_exists('\Sentry\State\Hub')) {
\Sentry\captureException($exception);
}
return parent::show_exception($exception);
}
}
This will overwrite the codeigniter exception to log errors in sentry.
Step 5: Test the Integration
To test the integration, add the following code to generate the fake exception:
throw new Exception("Testing Sentry in CI3");
You should see this exception appear in your Sentry dashboard almost immediately.
Pro Tips
- Use
.env
files or config variables to store your DSN securely. - Configure environments like
development
,production
,staging
in theenvironment
key of the config. - You can even capture user context (like logged-in user ID or email) with Sentry.
Conclusion
With this setup, your CodeIgniter 3 project is now integrated with Sentry for powerful real-time error tracking. From catching uncaught exceptions to manually logging messages, Sentry gives you the tools you need to debug faster and ship more reliably.
Have questions or need help capturing user context? Drop a comment below!