PHPackages                             pionne/pionne - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. pionne/pionne

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

pionne/pionne
=============

Error monitoring SDK for PHP — Pionne. Works standalone, with Laravel (auto-discover) and with Symfony (event listener).

v0.3.3(1mo ago)02MITPHPPHP ^8.1

Since May 5Pushed 2w agoCompare

[ Source](https://github.com/agkgcreations/pionne-sdk-php)[ Packagist](https://packagist.org/packages/pionne/pionne)[ Docs](https://pionne.agkgcreations.fr)[ RSS](/packages/pionne-pionne/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (4)Versions (8)Used By (0)

pionne/pionne — PHP SDK
=======================

[](#pionnepionne--php-sdk)

Error monitoring SDK for PHP — by [Pionne](https://pionne.agkgcreations.fr).

Auto-captures uncaught exceptions and fatals, ships rich runtime context (PHP version, OS, hostname, pid). Single dependency on `ext-curl` (built into PHP). Wire-format compatible with `@pionne/web`, `@pionne/node`, `@pionne/react-native`, `pionne_flutter`.

Includes drop-in integrations for **Laravel** (auto-discover) and **Symfony** (event listener).

🎫 Get your token
----------------

[](#-get-your-token)

Pionne is **mobile-first**: you sign up, create projects, and watch your error feed **from the Pionne mobile app**, not a web dashboard.

1. **Download the app**:
    - 🍎 [App Store](https://apps.apple.com/app/id6766753270) *(coming soon)*
    - [![Get it on Google Play](https://camo.githubusercontent.com/2ea3b1d605be783034a4a4cf364f24cdd29b52f60caf0892b03c3e53e85b91ce/68747470733a2f2f706c61792e676f6f676c652e636f6d2f696e746c2f656e5f75732f6261646765732f7374617469632f696d616765732f6261646765732f656e5f62616467655f7765625f67656e657269632e706e67)](https://play.google.com/store/apps/details?id=fr.agkgcreations.pionne)
2. Create your account (30 days free, no card required)
3. **+ New project** → pick **Laravel** or **Symfony** → copy the token displayed (`pio_live_…`)
4. Paste it into your `.env` as `PIONNE_TOKEN=…`

⚠️ The token is only shown **once** at project creation — store it in `.env` (gitignored), never commit it to source.

Install
-------

[](#install)

```
composer require pionne/pionne
```

Plain PHP
---------

[](#plain-php)

```
use Pionne\Pionne;

Pionne::init([
    'token' => 'pio_live_xxx',
    'release' => '1.0.0',
    'environment' => 'production',
]);

try {
    process();
} catch (\Throwable $e) {
    Pionne::captureException($e, ['tags' => ['feature' => 'checkout']]);
    throw $e;
}
```

Laravel
-------

[](#laravel)

Auto-discovered. Just set the env vars:

```
PIONNE_TOKEN=pio_live_xxx
PIONNE_RELEASE=1.0.0
# PIONNE_AUTO_INSTALL=false # to opt out
```

Done. Every reportable exception is now forwarded to Pionne.

Symfony
-------

[](#symfony)

```
# config/services.yaml
services:
    Pionne\Symfony\PionneExceptionListener:
        tags:
            - { name: kernel.event_listener, event: kernel.exception }
```

```
// public/index.php (very top, before Kernel boot)
use Pionne\Pionne;

Pionne::init(['token' => $_ENV['PIONNE_TOKEN']]);
```

Symfony 6.3+ users can rely on the `#[AsEventListener]` attribute that ships with the listener — autoconfigure will pick it up automatically.

Profiling — preview (coming soon)
---------------------------------

[](#profiling--preview-coming-soon)

Continuous-ish CPU profiling is **shipped on `@pionne/react-native@0.8.0`**(Hermes sampler). The PHP implementation is on the roadmap and will use the [Excimer](https://github.com/wikimedia/excimer) extension (~1 % wall-clock overhead, drop-in for FPM and CLI). Excimer's collapsed-stack output is already supported by the Pionne backend's aggregator — the SDK side is the only missing piece.

The API will mirror RN/Node exactly:

```
// Coming in pionne/pionne ~v0.3.0
Pionne::profile('OrderController::store', function () {
    $this->dispatch();
}, ['route' => 'POST /orders']);
```

Same backend (`POST /api/profiles`), same retention (raw 7 d, aggregates 90 d), same flame graph view + cross-release regression chart in the mobile dashboard. If you want profiling **today** in PHP, install Excimer manually and post the collapsed-stack JSON to the endpoint directly — the JSON shape is documented at [pionne.agkgcreations.fr/profiling/intro](https://pionne.agkgcreations.fr/profiling/intro).

Heads-up : Excimer requires shared-hosting providers to install the PECL extension; check with your hosting provider for availability. On a managed host without it, profiling falls back to Symfony's `debug:stopwatch`-style manual spans (lighter, less precise).

Bundle ID pinning — N/A on PHP
------------------------------

[](#bundle-id-pinning--na-on-php)

The "Bundle ID" anti-token-theft check on Pionne projects is **mobile only**(iOS/Android/RN/Flutter). On Laravel/Symfony, your token lives in `.env`(gitignored) or a secrets manager — never in a decompilable binary — so the threat doesn't exist. The field is hidden in the mobile dashboard for Laravel/Symfony projects; **don't set it manually via the API** — the SDK does not send a top-level `app_id`, so a non-null `bundle_id` would 403 every event. Use `tags` to differentiate deployments instead:

```
Pionne::init([
    'token' => env('PIONNE_TOKEN'),
    'tags'  => [
        'deployment' => env('APP_DEPLOYMENT', 'prod'),
        'region'     => env('AWS_REGION', 'eu-west-3'),
    ],
]);
```

See the [Bundle ID Pinning docs](https://pionne.agkgcreations.fr/security/bundle-id#backends-sans-bundle_id).

Geography (opt-in)
------------------

[](#geography-opt-in)

Approximate server location (city, region, country) attached to every event. Off by default for privacy — flip `sendGeography` to enable:

```
Pionne::init([
    'token' => 'pio_live_xxx',
    'sendGeography' => true,
]);
```

Resolved once at startup via a free IP→geo lookup (`https://ipapi.co/json/`by default), with a 4 s timeout. If the lookup fails the SDK silently keeps shipping events without geo. Override the endpoint via `geographyEndpoint`if you have your own.

For Laravel, set `PIONNE_GEOGRAPHY=true` in your `.env`.

API
---

[](#api)

```
Pionne::captureException(\Throwable $e, array $extra = []);
Pionne::captureMessage(string $message, array $extra = []);
Pionne::setUser(?string $userIdAnon);
Pionne::setTags(?array $tags);
Pionne::setEnabled(bool $enabled);
```

Rate limit serveur
------------------

[](#rate-limit-serveur)

L'API Pionne applique un rate-limit par token sur tous les endpoints publics. Au-delà → `HTTP 429` avec un header `Retry-After`. Le SDK fait silencieusement échouer (try/catch interne).

Empêche un token leaké, un worker PHP qui throw en boucle, ou un endpoint hammered par un bot, de drainer ton infra ou ton quota mensuel. Pour un site PHP qui sert des milliers de requêtes/sec, **utilise `sampleRate`** (`'sampleRate' => 0.1` envoie 1 event sur 10) pour rester sous le cap par token tout en gardant un signal statistique.

Voir [doc rate limits](https://pionne.agkgcreations.fr/security/rate-limits).

License
-------

[](#license)

MIT

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance95

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

6

Last Release

31d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/433e4a748e09ecd929331c9e48ee6039a16d449f4094dc208a6df3a4d54c9b56?d=identicon)[nedylasfalte86](/maintainers/nedylasfalte86)

---

Top Contributors

[![nedylasfalte86](https://avatars.githubusercontent.com/u/72157353?v=4)](https://github.com/nedylasfalte86 "nedylasfalte86 (10 commits)")

---

Tags

symfonylaravelerror-monitoringcrash-reportingobservabilitysentry-alternativepionne

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/pionne-pionne/health.svg)

```
[![Health](https://phpackages.com/badges/pionne-pionne/health.svg)](https://phpackages.com/packages/pionne-pionne)
```

###  Alternatives

[sentry/sentry-laravel

Laravel SDK for Sentry (https://sentry.io)

1.4k122.6M183](/packages/sentry-sentry-laravel)[stayallive/wp-sentry

A (unofficial) WordPress plugin to report PHP and JavaScript errors to Sentry.

383211.1k](/packages/stayallive-wp-sentry)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
