title | description | weight | cSpell:ignore |
---|---|---|---|
PHP |
<img width="35" class="img-initial" src="/img/logos/32x32/PHP.svg" alt="PHP"> A language-specific implementation of OpenTelemetry in PHP. |
21 |
mbstring opcache |
{{% docs/languages/index-intro php /%}}
OpenTelemetry SDK for PHP aims to support all officially supported PHP versions according to www.php.net/supported-versions, and support will be dropped for PHP versions within 12 months of that version going End of Life.
Auto-instrumentation requires PHP version 8.0+.
Some of the SDK
and Contrib
packages have a dependency on both a
HTTP Factories (PSR-17) and a
php-http/async-client
implementation. You can find appropriate composer packages implementing given
standards on packagist.org.
See
http-factory-implementations
to find a PSR-17 (HTTP factories)
implementation, and
async-client-implementations
to find a php-http/async-client
implementation.
Extension | Purpose |
---|---|
ext-grpc | Required to use gRPC as a transport for the OTLP exporter |
ext-mbstring | More performant than the fallback, symfony/polyfill-mbstring |
ext-zlib | If you want to compress exported data |
ext-ffi | Fiber-based context storage |
ext-protobuf | Significant performance improvement for otlp+protobuf exporting |
Fibers support can be enabled by setting the OTEL_PHP_FIBERS_ENABLED
environment variable to true
. Using fibers with non-CLI
SAPIs may require
preloading of bindings. One way to achieve this is setting
ffi.preload
to src/Context/fiber/zend_observer_fiber.h
and setting
opcache.preload
to
vendor/autoload.php
.
The native protobuf library is significantly slower than the extension. We strongly encourage the use of the extension.
OpenTelemetry for PHP is distributed via
packagist, in a number of
packages. We recommend that you install only the packages that you need, which
as a minimum is usually API
, Context
, SDK
and an exporter.
We strongly encourage that your code only depend on classes and interfaces in
the API
package.