New Relic PHP agent v9.18.1
New features
- Added a Docker development environment. It's now possible for contributors to both develop and test (unit tests and integration tests) without setting up a specific environment on their own system. Please see our documentation for more information.
- Route caching in
Laravel 7.x
is now supported!. Transaction naming now works with routes cached viaphp artisan route:cache
. @stockalexander, thanks for your contribution! Redis::mget
andRedis::mset
functions are now supported. @b-viguier, thanks for your contribution!
Bug fixes
- Fixed instances where a memory leak was occurring with our
curl multi
instrumentation. - Fixed an issue where a supportability metric used to track an edge case was causing a segfault.
- Fixed an issue where PHP versions with an unknown API version were incorrectly handled during Debian package install.
- Fixed instances where
parent.transportDuration
values are0
for transactions between two PHP applications instrumented through distributed tracing. @b-viguier, thanks for your contribution! - Fixed an issue where the
newrelic.ini
configuration file was incorrectly installed. @b-viguier, thanks for your contribution!
Support statement
- New Relic recommends that you upgrade the agent regularly and at a minimum every 3 months. As of this release, the oldest supported version is 8.6.0.
New Relic PHP Agent v9.17.1
Bug Fixes
- Fixed instances where the agent's
mysqli_commit
instrumentation returned a NULL instead of a boolean. - Fixed an issue where parameters were not passed by reference in the agent's pdo instrumentation. This caused a warning in PHP 8.
- Fixed instances where an
Unknown PHP version: 8.0
error was occurring when installing on Debian and Ubuntu systems.
Support Statement
- New Relic recommends that you upgrade the agent regularly and at a minimum every 3 months. As of this release, the oldest supported version is 8.6.0.
End of life notices
- This will be the last release in which ZTS builds are supported. In the future, ZTS builds may not be provided, and support may be completely pulled from the codebase.
- New Relic no longer supports PHP 5.3 or PHP 5.4. New Relic highly encourages upgrading to a supported version of PHP. If you would like to continue running the New Relic PHP agent with PHP 5.3 or 5.4, we recommend using version 9.16 of the agent. However, please note that we can only offer limited support in this case.
- Ubuntu LTS versions earlier than 14.04, Ubuntu non-LTS versions earlier than 19.04, and Debian versions earlier than 7 "wheezy" are no longer supported.
- The following frameworks or framework versions are no longer supported and may be removed from future agent builds:
- Cake PHP 1.x
- Joomla 1.5, 1.6, and 2.x
- Kohana
- Silex 1.x and 2.x
- Symfony 1.x and 2.x
New features
- The agent now supports 64-bit PHP 8.0! Compatibility note: When PHP 8.0 detects the New Relic agent, it disables JIT.
mysqli_commit
is now instrumented.
Bug fixes
- Fixed a memory leak that occurred when short lived segments throw exceptions.
- Fixed a build up of duplicate distributed tracing headers that sometimes occurred when using
file_get_contents
. - Fixed an issue where Laravel Lumen transactions were not being properly named.
Support statement
- New Relic recommends that you upgrade the agent regularly and at a minimum every 3 months. As of this release, the oldest supported version is 8.6.0.
Bug fixes
- The Drupal instrumentation now guards against rare conditions that led to PHP processes exiting with an allocation error. Additionally, the allocation routines now log stack traces when they fail.
- When initially building the agent, a parallel build is no longer required to avoid an error about a missing header file (v1.pb-c.h).
- SOAP transactions when using Magento 2.3.2+ are now properly named instead of being attributed to Magento's internal SOAP interceptor. Thanks @steven-hoffman-jomashop for the issue report and fix suggestion!
Support statement
- New Relic recommends that you upgrade the agent regularly and at a minimum every 3 months. As of this release, the oldest supported version is 8.5.0.
End of Life Notices
- Support for PHP 5.3 and PHP 5.4 in the New Relic PHP Agent is deprecated and will be removed in a future version. New Relic highly encourages upgrading to a supported version of PHP - 7.3 or higher as of the date of this release. If you would like to continue running the New Relic PHP agent with PHP 5.3 and 5.4, we recommend using version 9.15 of the agent for maximum compatibility. However please note that we can only offer limited support in this case.
- This release marks the last officially supported New Relic PHP Agent for CentOS 5.
- MacOS builds of the New Relic PHP Agent will no longer be provided, and we will no longer ensure compatibility on MacOS platforms.
- For more information about these EOL notices, see our Explorers Hub post.
New features
- Support has been added for Laminas 3.x.
- Support has been added for Laravel Lumen 6.x, 7.x, and 8.x
- Experimental support has been added for excluding subpaths from Wordpress instrumentation. This lowers the overall Wordpress instrumentation overhead since it reduces the number of files being instrumented, but at the cost of losing visibility into the code in the excluded subpaths. This can be enabled using the ini file setting
newrelic.framework.wordpress.hooks_skip_filename
.
Bug fixes
- Corrected string representation of arginfo parameter names. Thank you @TysonAndre for this contribution.
Support statement
- New Relic recommends that you upgrade the agent regularly and at a minimum every 3 months. As of this release, the oldest supported version is 8.4.0.
New Features
The PHP agent is now open source!
The agent source code is available and open to contributions. You can now report issues and make feature requests for the agent directly on GitHub. See our README for more information.
Bug Fixes
- Under some circumstances, the agent reported a total time higher than the response time when using Zend_Http_Client. This has been fixed.
- The agent leaked a small amount of memory for each fulfilled Guzzle promise. This has been fixed.
- Calls to newrelic_insert_distributed_trace_headers could cause crashes on PHP 7.0, 7.1, and 7.2. This has been fixed.
- In rare cases, using Guzzle with WordPress and PHP 7.4 caused crashes. This has been fixed.
New Features
- Support has been added for Slim Framework 4.x.
- Support has been added for Laravel 7.x.
Bug Fixes
- Users of
newrelic_record_datastore_segment
may have experienced situations where the total transaction time was higher than the response time. This was fixed and users will see behavior consistent with automatically created datastore segments. - Previously, WordPress plugins referred to by their path names were not accounted for in caching. This behavior has been fixed, and users to which this applies to should see improvements in overhead.
New Features
With the addition of attributes on spans, the PHP agent now fully supports Infinite Tracing on New Relic Edge.
Infinite Tracing observes 100% of your distributed traces and provides visualizations for the most actionable data so you have the examples of errors and long-running traces so you can better diagnose and troubleshoot your systems. You configure your agent to send traces to a trace observer in New Relic Edge. You view your distributed traces through the New Relic’s UI. There is no need to install a collector on your network.
Infinite Tracing is currently available on a sign-up basis. If you would like to participate, please contact your sales representative.
Added support for attributes on spans. All custom attributes and some agent attributes previously applied as “Transaction events” are now also applied to the currently executing span, subject to the new span configuration settings.
Added the
transaction.name
to spans.Added
http.statusCode
to external spans, representing the status code on an http response.Added error attributes to each span that exits with an error or exception.
error.class
anderror.message
are now included on the span in which an error or exception was noticed, and, in the case of unhandled exceptions, on any ancestor spans that also exit with an error. Also, the public API methodnewrelic_notice_error
now attaches these error attributes to the currently executing span, while still creating a Transaction Error event.Spans with error details are now highlighted red in the distributed tracing UI, and error details will expose the associated
error.class
anderror.message
. It is also now possible to see when an exception leaves the boundary of the span, and if it is caught in an ancestor span without reaching the entry span. NOTE: This “bubbling up” of exceptions will impact the error count when compared to prior behavior for the same trace. It is possible now to have a trace that has span errors without showing an error on the root span or entry spans.Added a new API method
newrelic_add_custom_span_parameter
that allows adding custom attributes to spans. This is independent of the transaction; using this new API to add custom attributes to spans does not add them to transactions. If the maximum number of custom attributes is reached, span-level custom attributes take precedence over transaction-level custom attributes.Added the following span event attributes configuration to enable attribute filtering for spans:
newrelic.span_events.attributes.enabled
newrelic.span_events.attributes.include
newrelic.span_events.attributes.exclude
Note: Security recommendation—Review your Transaction attributes configuration. Any attribute include or exclude settings specific to Transaction events, should be applied to your Span attributes configuration or your global attributes configuration.
Bug Fixes
- In cases where the agent is configured to connect to the hostname of a daemon that exists in a separate container/host, after successfully connecting, the agent would not attempt to resolve the IP address again. This was seen when the daemon container/host goes down and then comes up again with a new IP address. Now, the agent will wait 45 seconds since either the last known good connection or the last IP address resolution and will attempt to resolve an IP address again.
New Features
- Added support for New Relic Infinite Tracing. Note: the PHP agent does not yet support attributes on spans. This will be available in the next minor release.
- Added the following Infinite Tracing configuration options:
- Support for auto-instrumenting Symfony 5 applications has been added.
- Support for auto-instrumenting Drupal 9 applications has been added.
Bug Fixes
- In some cases the
newrelic-daemon
got caught in an infinite loop on startup when the socket it tried to connect to was already acquired by another process. This behavior has been accounted for and fixed.
Bug Fixes
- In some cases, instrumenting Laravel queue applications while having distributed tracing turned on could potentially lead to a segfault. This has been fixed.