A PHP Exception Handler to Post Exceptions to a Slack Channel

v2.0.3 2014-08-29 08:06 UTC


A PHP Exception Handler to Post Exceptions to a Slack Channel


  • make sure your PHP Installation has curl loaded
  • create a Channel on Slack
  • create an Incoming Webook for your Slack Channel & copy the Integration Token.
  • add the Packagist Package to your composer.json
  • run composer update


You need to configure this Class before you can use it:

        'username'       => 'company',                  // Your Slack Subdomain (e.g. company.slack.com)
        'token'          => '<your token>',             // The Slack Integration Token
        'data_path'      => '/tmp',                     // The Path to store full Exception Traces in
        'webhookChannel' => '#exceptions',              // Your Slack Channel
        'webhookUser'    => 'exception',                // The Username who will post Messages
        'webhookIcon'    => ':ghost:',                  // The Icon for the Username (can be :ghost: or an URL)
        'hostname'       => php_uname('n'),             // The Hostname your Application is running on
        'version'        => '1.0.0',                    // Your Application Version
        'env'            => 'production'                // The Applications Environment (e.g. production or development)

And finally set the Exception Handler:

set_exception_handler(array('\ExceptionHandler', 'handleException'));

You will start to get Messages like these in your Channel:

chrisbookair.local/2.0.81@development: uncaught Exception in file /Users/christian/Code/PhpstormProjects/api-v2/app/Classes/Util/GeneralUtility.php on line 581 (Code: 8 - Trace: handleException.1395606690.trace.532f44a20d0cc.txt): Memcache::connect(): Server (tcp 11211) failed with: Connection refused (61)

ExceptionHandler will quit your current Applications run and returns a json_encode()d Message

  "status": 500,
  "message": "Okay, Houston, we've had a problem here. -- Don't panic. The Team has been notified."

other Usage

By default this ExceptionHandler will care about uncaught Exceptions. If you want to send Slack Messages for Exceptions you handled you can use this like \ExceptionHandler::handleException($exception, true); to get notified. ExceptionHandler will not die() in this case.

You can even use ExdeptionHandler to just send Notifications. This feels a little weired however: \ExceptionHandler::handleException(new \Exception('I\'m some text to send to Slack.'), true);