Re: Possibility to include called object in exception backtrace
| From: | Marc B. | Date: | Sun, 14 Dec 2025 07:57:51 +0000 |
| Subject: | Re: Possibility to include called object in exception backtrace | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-129607@lists.php.net to get a copy of this message | ||
Hi all,
this is a reminder
If there are still any objections about this PR please speak up.
Else, I would kindly ask for merge without RFC.
Thanks
Marc
On 29.11.25 08:14, Marc B. wrote:
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 isunchanged: exception traces do not contain the object.* When zend.exception_provide_object = 1, exception backtraceincludes 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