如何获取PHP的完整字符串getTraceAsString()? [英] How can I get the full string of PHP’s getTraceAsString()?

查看:726
本文介绍了如何获取PHP的完整字符串getTraceAsString()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 getTraceAsString()获取堆栈跟踪,但由于某些原因字符串被截断。

I'm using getTraceAsString() to get a stack trace but the string is being truncated for some reason.

示例,抛出异常,并使用以下方式记录字符串:

Example, an exception is thrown and I log the string using:

catch (SoapFault $e) {
error_log( $e->getTraceAsString() )
}

打印的字符串out是:

The string thats prints out is:


#0 C:\Somedirectory\Somedirectory\Somedirectory\Somedir\SomeScript.php(10): SoapClient-> SoapClient(' http://www.ex ...')

如何获得完整的字符串打印?

How can I get the full string to print?

推荐答案

我创建此函数以返回没有截断字符串的堆栈跟踪:

I created this function to return a stack trace with no truncated strings:

function getExceptionTraceAsString($exception) {
    $rtn = "";
    $count = 0;
    foreach ($exception->getTrace() as $frame) {
        $args = "";
        if (isset($frame['args'])) {
            $args = array();
            foreach ($frame['args'] as $arg) {
                if (is_string($arg)) {
                    $args[] = "'" . $arg . "'";
                } elseif (is_array($arg)) {
                    $args[] = "Array";
                } elseif (is_null($arg)) {
                    $args[] = 'NULL';
                } elseif (is_bool($arg)) {
                    $args[] = ($arg) ? "true" : "false";
                } elseif (is_object($arg)) {
                    $args[] = get_class($arg);
                } elseif (is_resource($arg)) {
                    $args[] = get_resource_type($arg);
                } else {
                    $args[] = $arg;
                }   
            }   
            $args = join(", ", $args);
        }
        $rtn .= sprintf( "#%s %s(%s): %s(%s)\n",
                                 $count,
                                 $frame['file'],
                                 $frame['line'],
                                 $frame['function'],
                                 $args );
        $count++;
    }
    return $rtn;
}

或者,您可以编辑截断输出的php源: a href =https://github.com/php/php-src/blob/master/Zend/zend_exceptions.c#L392 =noreferrer> https://github.com/php/php-src/ blob / master / Zend / zend_exceptions.c#L392

Alternatively, you could edit the php source where it is truncating the output: https://github.com/php/php-src/blob/master/Zend/zend_exceptions.c#L392

这篇关于如何获取PHP的完整字符串getTraceAsString()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆