APM and distributed tracing for PHP
The Datadog PHP Tracer brings APM and distributed tracing to PHP.
License: BSD 3-Clause
| Version | Release | Download |
| 1.16.0 | 2026-03-04 | datadog_trace-1.16.0.tgz |
| 1.15.2 | 2025-12-22 | datadog_trace-1.15.2.tgz |
| 1.15.1 | 2025-12-19 | datadog_trace-1.15.1.tgz |
| 1.15.0 | 2025-12-16 | datadog_trace-1.15.0.tgz |
| 1.14.1 | 2025-11-26 | datadog_trace-1.14.1.tgz |
| Version | Message |
| 1.16.0 |
## All products ### Fixed - Fix packaging apks for new alpine versions #3555 - Fix http_response_header deprecation in installer #3553 ## Tracer ### Added - Support OpenTelemetry Metrics #3487 - Adds process_tags to the first span of each tracing payload #3566 - Distributed tracing header injection in HyperF/Swoole environments #3544 - Stream context integration with HTTP method #3534 ### Changed - Enable http.endpoint calculation when appsec is explicitly enabled #3556 ### Fixed - Fix panic after bailout in previous request #3537 - Avoid curl_getenv for unix:// too #3540 - Correct a bug on prepared statement regarding DBM correlation #3545 - Fix onclose in cycle collected spans #3587 - prefer poll() for channel DataDog/libdatadog#1443 - AWS lambda also can return EACCESS for shm_open DataDog/libdatadog#1446 ### Internal - bump libdatadog to v25.0.0 #3568 ## Profiler ### Changed - Optimise allocation profiling for PHP >= 8.4 #3550 ### Fixed - Fixed bindgen compatibility with PHP 8.5.1+ on macOS #3583 - Fixed SystemSettings initialization #3579 - Fixed UB and simplify SystemSettings #3578 - Fixed crash in upload for DD_EXTERNAL_ENV #3576 - Fixed crash in ddtrace_get_profiling_context #3563 - Check long string before allocating #3561 - Fixed incompatibility with ext-grpc #3542 - Revert unsafe optimization in memory profiling #3541 - Cap dependency name length to copied bytes #3538 ### Internal - Pre-reserve function name buffer #3445 - Use cached heap in alloc_prof_orig_* functions #3547 ## AppSec ### Added - Reduce cardinality of helper.connection_* #3586 - Added fallback on http.endpoint for schema sampler #3557 ### Fixed - Use abstract namespace on linux #3525 - Fix spurious munmaps in ZTS mode #3590 ### Internal - Improvements for appsec libxml2 usage #3564 - Improve xml parsing in appsec #3558 |
| 1.15.2 |
## Profiler ### Fixed - Revert unsafe optimization (#3541) |
| 1.15.1 |
## Tracer ### Fixed - Fix panic after bailout in previous request #3537 |
| 1.15.0 |
## All products ### Internal - bump tracing-core from 0.1.33 to 0.1.35 #3516 ## Tracer ### Internal - Const-ify some logging thread-local variables #3513 ### Fixed - Avoid curl's `getenv` calls #3528 - `code_origin_for_spans_enabled` naming inconsistency #3494 - Add `NULL` guard clause in sidecar reconnect callback #3499 ## Profiler ### Added - Detect parallel threads #3515 ### Changed - Speedup hot path in allocator #3505 ### Fixed - Fixed asserting length of INI #3508 ## AppSec ### Added - Minify blocking json message #3502 - Add Custom Data Classification #3524 - Add metrics for extension connections #3527 ### Fixed - Amend string on request abort #3506 - Fix accessing to incorrectly hardcoded `$_GET` #3501 - Amend issue where `security_response_id` is being release before displaying it #3493 - AppSec helper: add send timeouts #3518 - Minor fixes and improvements to file descriptor reclamation #3526 - LaravelIntegration: be more defensive #3503 - Fix `duration_ext` metric #3507 - Fix segfault iterating mapping #3517 - Fix double end hook run/segfault when blocking in PHP 7.x #3490 - Fix `_iovec_writer_flush` and enforce limits on `$_POST` #3495 - Clear `client_ip` on `request_init` #3496 |
| 1.14.1 |
## Profiling ### Fix - Upgrade to libdatadog v24.0.2 #3492 #3498 |