Possibility to include called object in exception backtrace

From: Date: Sat, 29 Nov 2025 07:14:05 +0000
Subject: Possibility to include called object in exception backtrace
Groups: php.internals 
Request: Send a blank email to internals+get-129473@lists.php.net to get a copy of this message
Hi all,

I have opened a simple PR to add the possibility to include called object in exception backtrace.

https://github.com/php/php-src/pull/20599

This needs a discussion here to see if there are objections.

About the patch:

The patch adds the ability to populate the called |object| into exception backtraces.

Previously, only |debug_backtrace()| could include the called object in its frames, but |Exception::getTrace()| could not. This change aligns |Exception::getTrace()| with |debug_backtrace()| by introducing a new INI directive:

|zend.exception_provide_object (boolean)|

This directive is analogous to the existing |zend.exception_ignore_args| option, but controls whether the |object| field is included in exception backtraces.

*Behavior:*

 * When zend.exception_provide_object = 0 (default), behavior is
   unchanged: exception traces do not contain the object.
 * When zend.exception_provide_object = 1, exception backtrace includes
   the called |object| (where applicable).

*Defaults:*

 * No configuration value provided: |zend.exception_provide_object = Off|
 * |php.ini-production|: |zend.exception_provide_object = Off|
 * |php.ini-development|: |zend.exception_provide_object = On|

*Use cases and considerations:*
This feature is primarily intended for development and debugging.
Provides richer diagnostic information by exposing the actual object on which methods were invoked.
Can help track down state-dependent bugs that depend on specific object properties.

However, it is not recommended for production environments, because:

 * It may expose sensitive data held on objects in logs or error output.
 * It can increase memory usage and the size of collected traces.

For production systems, |zend.exception_provide_object| should remain disabled.

Additionally, I added a note to zend.exception_ignore_args and zend.exception_provide_object as this increases the refcount of the objects, and therefore may delay object destruction.

Marc


Thread (1 message)

  • Marc B.
« previous php.internals (#129473) next »