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.