展开 PHP 堆栈跟踪参数
在从开发中的 PHP 应用程序返回的堆栈跟踪中,函数的长字符串参数在错误页面上显示时被截断:
Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO "tb...', Array)
如何扩展查询参数以使全文可见?服务器正在运行 PHP 5.3.3。
On a stack trace returned from a PHP application in development, long string arguments to a function are truncated when display on the error page:
Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO "tb...', Array)
How can I expand the query argument so the full text is visible? The server is running PHP 5.3.3.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 debug_backtrace 代替。据我所知,它会给你完整的跟踪并且不会删除参数。
来摆脱它
再考虑一下:您可以通过为整个应用程序添加全局 try catch或添加 全局异常处理程序到您的应用程序。
Use debug_backtrace instead. It will give you the whole trace and doesn't trim arguments as far as I know.
On a second thought: You might get away with it by either adding a global try catch for the entire application
or by adding a global Exception handler to your application.
从 PHP 8.0 开始,实际上可以提高参数被截断的限制。
您可以更改新引入的 php.ini 设置
zend.exception_string_param_max_len
并将其设置为 0 到 1000000 之间的任何值,默认值为 15。这仅影响使用
getTraceAsString()
或通过将异常转换为字符串(例如,通过打印它)。更多信息请访问此处或在相应的 RFC 中。
Starting with PHP 8.0 it is possible to actually raise the limit at which arguments will be truncated.
You can change the newly introduced php.ini setting
zend.exception_string_param_max_len
and set it to any value between 0 and 1000000, the default being 15.This only affects stack traces generated using
getTraceAsString()
or by casting an exception to a string (e.g., by printing it).More information is available here or in the corresponding RFC.