MyTetra Share
Делитесь знаниями!
Как увидеть все ошибки в CodeIgniter
Время создания: 21.08.2012 22:23
Раздел: Компьютер - Программирование - Язык PHP - CodeIgniter
Запись: xintrea/mytetra_syncro/master/base/1345573424ah7475f8gz/text.html на raw.github.com

Чтобы отобразить все ошибки в CodeIgniter 2.1.2, нужно:


1. Настроить файл php.ini. В Debian Squeeze этот файл находится по пути /etc/php5/apache2/php.ini. Нужно найти опцию display_errors и сделать ее равной On, вот так:


display_errors = On


Так же в этом файле надо проверить опцию error_reporting и установить ей следующее значние:


error_reporting = E_ALL & ~E_DEPRECATED


После этого надо перезапустить Apache2.


Примечание. Следует помнить, что настройки для запуски PHP из командной строки могут различаться для PHP-скриптов, запускаемых из сервера Apache2. Настройки запуска PHP-скриптов из командной строки находятся в файле /etc/php5/cli/php.ini.


2. В файле index.php, который лежит в корне сайта, надо найти команду установки значения определения ENVIRONMENT:


define('ENVIRONMENT', 'development');


Если значение равно 'development', то будет включен максимальный уровень вывода ошибок E_ALL.


3. Далее, в файле APPPATH/config/config.php надо выставить следующую опцию:


$config['log_threshold'] = 4;


Что соответствует максимальному уровню вывода ошибок.



4. Чтобы увидеть ошибки, связанные с работой базы данных, надо в файле APPPATH/config/database.php выставить опцию:


$db['default']['db_debug'] = true;


Все вышеуказанные настройки частично увеличат вывод информации об ошибках. Однако, ошибки ядра всеравно будут скрываться, а так же настройка п. 4, как показывает анализ кода, ни на что не влияет.



Поэтому дальше надо сделать следующее. Тут уже не обойтись без правки ядра или без переопределения классов ядра в виде своих собственных классов. Здесь я буду описывать правку самого ядра.


1. Надо найти файл SYSTEM/core/common.php, найти в нем функцию _exception_handler и закомментировать в ней следующие строки:


function _exception_handler($severity, $message, $filepath, $line)

{

if ($severity == E_STRICT)

{

// return;

}



$_error =& load_class('Exceptions', 'core');



// if (($severity & error_reporting()) == $severity)

// {

$_error->show_php_error($severity, $message, $filepath, $line);

// }

...


2. Надо в файле SYSTEM/database/DB_driver.php установить свойство db_debug в значение true:


var $db_debug = true;



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования