PHP

Rollbar SDK for PHP

Rollbar-PHP detects errors and exceptions in your application and reports them to Rollbar for alerts, reporting, and analysis.

Quick Start

Supported PHP versions: 5.3, 5.4, 5.5, 5.6, 7, 7.1, 7.2 and HHVM (currently tested on 3.6.6).

For PHP 5.3, make sure you install packfire/php5.3-compat as outlined in the suggested dependencies in composer.json.

The docs linked below will help you get Rollbar up and running quickly in various PHP platforms and toolchains.

Usage

If you'd like to report exceptions that you catch yourself:

<?php
use Rollbar\Rollbar;
use Rollbar\Payload\Level;

try {
    do_something();
} catch (\Exception $e) {
    Rollbar::log(Level::ERROR, $e);
    // or
    Rollbar::log(Level::ERROR, $e, array("my" => "extra", "data" => 42));
}

You can also send Rollbar log-like messages:

<?php
use Rollbar\Rollbar;
use Rollbar\Payload\Level;

Rollbar::log(Level::WARNING, 'could not connect to mysql server');
Rollbar::log(
    Level::INFO, 
    'Here is a message with some additional data',
    array('x' => 10, 'code' => 'blue')
);

Using dependency injection

If you're using dependency injection containers, you can create and get a RollbarLogger from the container and use it to initialize Rollbar error logging.

It's up to the container to properly create and configure the logger.

<?php
use Rollbar\Rollbar;
use Rollbar\RollbarLogger;

$logger = $container->get(RollbarLogger::class);

// installs global error and exception handlers
Rollbar::init($logger);

Configuration

Asynchronous Reporting

By default, payloads (batched or not) are sent as part of script execution. This is easy to configure but may negatively impact performance. With some additional setup, payloads can be written to a local relay file instead; that file will be consumed by rollbar-agent asynchronously. To turn this on, set the following config params:

<?php
$config = array(
    // ... rest of current config
    'handler' => 'agent',
    'agent_log_location' => '/var/www'  // not including final slash. must be writeable by the user php runs as.
);

You'll also need to run the agent. See the rollbar-agent docs for setup instructions.

NOTE: The access_token is populated in the SDK to be passed to the rollbar-agent. If the access_token is missing then the rollbar-agent will create this access_token. The payload delivered to the rollbar-agent should be self-sufficient and that is why the SDK requires the access_token.

Centralized Log Aggregation with fluentd

If you have a fluentd instance running available you can forward payloads to this instance. To turn this on, set the following config params.

<?php
$config = array(
    // ... rest of current config
    'handler' => 'fluent',
    'fluent_host' => 'localhost',  // localhost is the default setting but any other host IP or a unix socket is possible
    'fluent_port' => 24224, // 24224 is the default setting, please adapt it to your settings
    'fluent_tag' => 'rollbar', // rollbar is the default setting, you can adjust it to your needs
);

Also you will have to install a suggested package fluent/logger.

Uncaught exceptions and errors

Rollbar.js provides a configuration option captureUncaught which allows you to control if uncaught exceptions should automatically reported to Rollbar. Rollbar PHP SDK allows you the same, but in a slightly different way. Rollbar::init takes the 2nd, 3rd and 4th argument which control if exceptions, errors and fatal errors are going to be reported to Rollbar. The default behavior is to report everything to Rollbar automatically. But if you want to change that, check out the following code:

<?php

\Rollbar\Rollbar::init(
    array('access_token' => '***', 'environment' => 'development'),
    false, // handle exceptions
    false, // handle errors
    false // handle fatal errors
);

The above example turns off the automatic reporting of uncaught exceptions, errors and fatal errors.

Performance optimization

If performance is an important factor for you, we recommend following the Composer's autoloading optimization guide.

To further increase performance of your application, we suggest to consider using the HHVM instead of the PHP interpreter with the hhvm-autoload plugin.

Configuration Options

For a listing of all configuration options available, see Configuration Reference

Help / Support

If you run into any issues, please email us at support@rollbar.com

For bug reports, please open an issue on GitHub.