温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - PHP missing function arguments in exception stack trace

其他 - PHP在异常堆栈跟踪中缺少函数参数

发布于 2020-03-27 15:57:05

我正在努力为自己的php应用程序开发自己的错误处理程序,并且需要向开发服务器上的用户发送一个漂亮的异常报告。因此,当它捕获到异常时,它必须解析异常堆栈跟踪以显示函数,行参数等。但是,在函数调用中不再有参数

我认为这是由XDebug引起的,我想更改xdebug.collect_params的值来修复它,但没有成功。实际上,此配置仅更改xdebug默认报告的显示,该报告现在具有函数调用参数。

我制作了一个测试脚本来对其进行测试,以便让您看到。

<?php
$config = 'xdebug.collect_params';
echo "Current value of $config is<br />\n";
var_dump(ini_get($config));

ini_set($config, 3);

function fallDeepToHell($param) {
    echo 'Param is : ' . $param . "<br>\n";
    throw new Exception();
}

try {
    fallDeepToHell('from heaven');
} catch(Exception $e) {
    var_dump($e->getTrace());
    var_dump($e->getTraceAsString());
}
fallDeepToHell('from heaven');

我的开发服务器上的结果是

在此处输入图片说明

我正在将PHP 7.4与FPM一起使用。

我的php.ini更改:

max_execution_time = 30
memory_limit = 128M
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
html_errors = On
post_max_size = 100M
upload_max_filesize = 49M
date.timezone = Europe/Paris

;[mail function]
mail.add_x_header = On

;[Session]
session.gc_divisor = 1000
session.gc_maxlifetime = 43200

我的XDebug设置仅与远程事物有关。

查看更多

查看更多

提问者
Loenix
被浏览
20
Korikulum 2020-02-15 06:50

我遇到了同样的问题,原来是PHP 7.4中引入的新zend.exception_ignore_argsINI指令

zend.exception_ignore_args 是新的INI指令,用于从异常生成的堆栈跟踪中包括或排除自变量。