PHP Agent

Released on: 
Thursday, August 8, 2019 - 11:30

New Features in 9.0

Detailed transaction traces now available when distributed tracing is enabled.

This release includes a refactor of segment storage to allow the agent to sort and apply different prioritization of segments that are used for transaction traces instead of distributed tracing. The PHP agent 8.4 release included limited support for distributed tracing, which resulted in the loss of detailed transaction traces for individual PHP services when distributed tracing was enabled.

The refactor in this new release allows the agent to send up the segments (spans) you want to view for a distributed trace that includes PHP services. It also separately provides as much segment detail as possible when exploring transaction traces for an individual PHP service.


  • The instructions to enable distributed tracing have not changed with this release.
  • The behavior of newrelic.transaction_tracer.detail has changed when distributed tracing is on. In the 8.4 - 8.7 PHP agent releases, newrelic.transaction_tracer.detail was disabled when distributed tracing was enabled. That is no longer the case. For more information, see the documentation for configuring trace level detail when using distributed tracing.
  • To enable the improved support for distributed tracing, the PHP agent's memory allocation strategy has changed in 9.0. The PHP agent will more aggressively allocate memory when a transaction starts, and the system allocator may choose not to release that memory back to the operating system immediately, depending on the configuration of the operating system kernel and C library. As a result, the memory usage of the PHP processes may now be higher than it was with previous versions of the PHP agent.

Upgrade Notices for 9.0

With these distributed tracing enhancements, please check threshold values.

  • In the 8.4 - 8.7 PHP agent releases, we recommended that customers set newrelic.transaction_tracer.threshold = 0 so that the agent would report complete distributed traces even when a lightweight PHP service was part of the trace. This is no longer necessary.
  • When upgrading to the 9.0 release, we recommend that you review your newrelic.transaction_tracer.threshold settings, and return this value to its default or some higher value that is sensible for the application.

The daemon will now issue a warning if it cannot find a root certificate bundle on startup.

  • The daemon includes its own certificates and will still operate, but a future version of the PHP agent will remove the built-in certificates. At that point the PHP agent will not be able to communicate with New Relic's servers.
  • Recommendation: Ensure ensuring that a root certificate bundle is installed on your host or in your container before using the PHP agent. This is generally available on most Linux distributions as a ca-certificates package. On FreeBSD, a bundle is available via the security/ca_root_nss package in ports.

The daemon may no longer be invoked with the --tls flag.

  • As of PHP agent version 8.0.0 the newrelic.daemon.ssl ini setting had been removed to increase security, but you could still invoke the daemon from the command line with --tls true. Command-line invocations of the daemon with the --tls flag will cause the invocation to fail.
  • As with all PHP agent versions since 8.0.0, TLS is always used for communication with New Relic servers.

Bug Fixes

  • A potential segfault when using drupal_http_request under PHP 7.3 has been fixed.
  • In some cases, starting a new transaction during a request (via newrelic_start_transaction or newrelic_set_appname) could result in an incomplete state of framework and user function instrumentation.
  • When obfuscating SQL, comments are stripped without any loss of the SQL itself.
  • Predis 0.8 commands that used the synchronous executeCommand() code path (for example, HSET) on a clustered connection did not generate metrics. This has been fixed.