Error monitoring for PHP.

With sentry/sentry, any PHP application reports errors and exceptions to Fehlo, with or without a framework. Setup is one Composer package and one call.

As of 24 October 2026, sentry/sentry 4.34.0, PHP 7.2 or later with the curl, json and mbstring extensions. We have not yet run the PHP SDK against Fehlo ourselves; it speaks the same protocol as the SDKs we tested.

For PHP without a framework, older in-house applications, or frameworks without their own package. Laravel and Symfony have their own guides.

1. Install the package

Terminal
composer require sentry/sentry

2. Start the SDK

As early as possible, right after Composer's autoloader, in your front controller or bootstrap file:

public/index.php
<?php

require __DIR__ . '/../vendor/autoload.php';

\Sentry\init([
    'dsn' => 'https://<key>@app.fehlo.de/<project-id>',
    'environment' => 'production',
    'release' => 'my-app@1.0.0',
    'send_default_pii' => false,
]);

The example in Sentry's documentation sets send_default_pii to true. Don't copy that without thinking: headers, cookies and IP addresses then go along. Instead of in code, the SDK can read the values from the environment:

.env or server environment
SENTRY_DSN=https://<key>@app.fehlo.de/<project-id>
SENTRY_ENVIRONMENT=production
SENTRY_RELEASE=my-app@1.0.0

3. Test it

The SDK reports uncaught exceptions by itself. Report a caught one like this:

test.php
try {
    throw new \RuntimeException('Fehlo test error');
} catch (\Throwable $exception) {
    \Sentry\captureException($exception);
}

The issue appears in Fehlo within seconds, with stack trace and code context.

Arguments in stack traces

For stack traces to show function arguments, PHP needs zend.exception_ignore_args = Off in php.ini. Production configurations often have On. With Off, argument values end up in events too; Fehlo filters passwords and tokens on the server.

Privacy

send_default_pii defaults to false. Since version 4.33 there is also data_collection. Don't set data_collection: once it is set, its more permissive defaults apply, and the SDK sends IP addresses, cookies and bodies. Fehlo strips the sender IP and filters email addresses, passwords and tokens.

Questions

Nothing arrives. What should I check?

First the DSN: it has to point at app.fehlo.de. Second, whether your server or browser can reach https://app.fehlo.de (firewall, proxy, ad blocker). Third, whether this month's quota is used up; you get an email when it is. Fourth, whether sampleRate or beforeSend drops events. If only performance data is missing, this month's transactions may be used up.