PHP
{{% lang_instrumentation_index_head php /%}}
Further Reading¶
Requirements¶
OpenTelemetry for PHP requires a minimum PHP version of 7.4, and auto-instrumentation requires version 8.0+.
Dependencies¶
Some of the SDK and Contrib packages have a dependency on both a
HTTP Factories (PSR17) 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 PSR17 (HTTP factories) implementation, and
async-client-implementations
to find a php-http/async-client implementation.
Optional PHP extensions¶
| 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 |
ext-ffi¶
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.
ext-protobuf¶
The native protobuf library is significantly slower than the extension. We strongly encourage the use of the extension.
Setup¶
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.