PHP отсутствуют аргументы функции в трассировке стека исключений - PullRequest
1 голос
/ 31 января 2020

Я работаю над созданием собственного обработчика ошибок для моих php приложений, и мне нужно отправить симпатичный отчет об исключениях пользователю на сервере разработки. Поэтому, когда он ловит исключение, он должен проанализировать трассировку стека исключений, чтобы показать функцию, строковые аргументы и т. Д. c. Но у меня больше нет аргументов в вызовах функций.

Я думаю, что это вызвано 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');

Результат на моем сервере разработки:

enter image description here

Я использую PHP 7.4 с FPM.

My 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 относятся только к удаленным вещам.

1 Ответ

2 голосов
/ 15 февраля 2020

У меня была такая же проблема, оказалось, что новая директива zend.exception_ignore_args INI введена в PHP 7.4 .

zend.exception_ignore_args - это новый INI директива для включения или исключения аргументов из трассировки стека, сгенерированных из исключений.

...