Я работаю над созданием собственного обработчика ошибок для моих 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');
Результат на моем сервере разработки:
Я использую 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 относятся только к удаленным вещам.