Можно ли записать все значения параметров в трассировках исключений? - PullRequest
1 голос
/ 25 августа 2009

При чтении журналов ошибок я замечаю, что длинные параметры (например, строки SQL) усекаются в трассировке исключений. Вот пример:

FR_Model .php (204): FR_Base-> query ( 'INSERT INTO pos ...' , Array)

Мне нужен простой способ отобразить полный параметр, не катя мой собственный подкласс Exception. ТИА.

1 Ответ

1 голос
/ 25 августа 2009

Проверьте ваши log_errors_max_len настройки PHP. От php.net :

log_errors_max_len integer - изменяемый: PHP_INI_ALL

Установить максимальная длина log_errors в байтах. В error_log информация о источник добавлен. По умолчанию 1024 а 0 позволяет не применять максимум длина вообще. Эта длина применяется регистрируемые ошибки, отображаемые ошибки и также до $php_errormsg.

Для проверки: ( с помощью этой фиктивной ошибки )

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors',0);
ini_set('log_errors',1);
ini_set('log_errors_max_len','0'); //change this value
ini_set('html_errors',0);

function deepTrace($a, $b, $c) {
    if ($c < 50) {deepTrace($a, $b, $c+1);} else {throw new Exception('Example exception that together with the trace is over 1024 bytes.');}
}
deepTrace('example','function',0);
?>

Если изменение log_errors_max_len в этом примере кода на 0 не работает, но изменение его на число больше 1024 имеет некоторый эффект, то вы почти наверняка загружаете zend_extension где-то, что переопределяет стандартное поведение PHP, такие как Zend Optimizer, Zend Debugger, Xdebug и т. д.

Попробуйте grep -r zend_extension /etc/php.*, чтобы найти любые используемые расширения; если найдена подходящая строка, которая не закомментирована, значит, ваш виновник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...