Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Отладчик для OpenCart - Debugger


Recommended Posts

Может кому то будет нужно, подружил ocStore 2.1.0.2.1 и debugger_0.0.2

 

В файле config.php в конце добавил:

define('DEBUG', true);

 

 

В файле index.php прописал:

// Registry
$registry = new Registry();
 
// Debugger
$debugger = new Debug();
$registry->set('debugger', $debugger);
 
// Loader
$loader = new Loader($registry);
$registry->set('load', $loader);
 
....
 
 
//эта строчка в самом конце в index.php
// вывод итогового лога отлатчика
echo !DEBUG ? null : $debugger->show($sysstart);

 
В файле system/library/db.php вставил вот такой код:

public function query($sql) {
   $sysstart = microtime(true);
        
        $res = $this->db->query($sql);
        
        $row = array();
        
    if(DEBUG){
    $caller = debug_backtrace();
            if (!empty($caller[1])) {
        $row['file'] = $caller[1]['file'];
        $row['line'] = $caller[1]['line'];
            } else {
                $row['file'] = $caller[0]['file'];
        $row['line'] = $caller[0]['line'];    
            }
   
    $row['Duration'] = round(( microtime(true) - $sysstart), 5);
    $row['Query'] = $sql;
            
    Debug::$_profs[] = $row;
    }
        
return $res;
}

 

После этого у меня стали отображатся SQL запросы.

Змінено користувачем dimmma73
  • +1 1
Надіслати
Поділитися на інших сайтах


Очень странно, на локалке заработало, а вот на хостинге нет. Также внес небольшие изменения в код, пример ниже:

 

В файле config.php в конце добавил:

define('DEBUG', true);
define('MEM_USAGE', true);


$sysstart = microtime(true);

 

В файле index.php прописал:


//в самом конце файла
echo !DEBUG ? null : Debug::show($sysstart);

 

В файле system/library/db.php вместо функции:

public function query($sql) {
return = $this->db->query($sql);
}

Заменить вот на эту функцию

public function query($sql) {
$sysstart = microtime(true);

$res = $this->db->query($sql);

$row = array();

if(DEBUG){
$caller = debug_backtrace();
if (!empty($caller[1])) {
$row['file'] = $caller[1]['file'];
$row['line'] = $caller[1]['line'];
} else {
$row['file'] = $caller[0]['file'];
$row['line'] = $caller[0]['line'];
}

$row['Duration'] = round(( microtime(true) - $sysstart), 5);
$row['Query'] = $sql;

Debug::$_profs[] = $row;
}

return $res;
}

Змінено користувачем dimmma73
  • +1 1
Надіслати
Поділитися на інших сайтах


  • 2 months later...

по поводу отладчика у меня ocstore 2.1 все работает но есть пару ошибок 

2016-11-08 15:34:47 - PHP Notice:  Undefined index: file in /var/www/posud55/data/www/posda-n.com.ua/system/library/db.php on line 25
2016-11-08 15:34:47 - PHP Notice:  Undefined index: line in /var/www/posud55/data/www/posa.com.ua/system/library/db.php on line 26
2016-11-08 15:34:47 - PHP Notice:  Undefined index: file in /var/www/posud55/data/www/posa-uicom.ua/system/library/db.php on line 25
 
if (!empty($caller[1])) {
$row['file'] = $caller[1]['file'];
$row['line'] = $caller[1]['line'];
} else {
$row['file'] = $caller[0]['file'];
$row['line'] = $caller[0]['line'];
}
Надіслати
Поділитися на інших сайтах


  • 3 months later...

А у меня все заработало с правками от dimmma73, за что ему большой респект!!!

Пробовал пока только на дефолтной теме Version 2.1.0.2 (rs.1) , завтра буду на свою адаптировать, если че.

Надіслати
Поділитися на інших сайтах


  • 2 months later...
  • 3 weeks later...
  • 1 month later...

Readme для Opencart 2.3  + кое-какая правка в debug.php + обновленный geshi

Скрытый текст

 

Установка:

1. Копируем файлы из папок admin и system в директорую установленного магазина

2. В файл \config.php и \admin\config.php добавляем в конец:

    


//debug
define('DEBUG', true);

2. Файл \index.php   и admin\index.php   

   2.1  \index.php


// рассчет времени работы
$sysstart = microtime(true);/*Добавил debuger*/
// рассчет памяти
function_exists('memory_get_usage') ? define('MEM_USAGE', memory_get_usage()) : null;/*Добавил debuger*/
// Version
define('VERSION', '2.3.0.2.3');
// Configuration
if (is_file('config.php')) {
    require_once('config.php');
}
// Install
require_once(DIR_SYSTEM . 'library/debug.php');/*Добавил debuger*/
if (!defined('DIR_APPLICATION')) {
    header('Location: install/index.php');
    exit;
}
// Startup
require_once(DIR_SYSTEM . 'startup.php');
start('catalog');
echo !DEBUG ? null : Debug::show($sysstart);/*Добавил debuger*/

    2.2 admin\index.php 


// рассчет времени работы
$sysstart = microtime(true);/*Добавил debuger*/
// рассчет памяти
function_exists('memory_get_usage') ? define('MEM_USAGE', memory_get_usage()) : null;/*Добавил debuger*/
// Version
define('VERSION', '2.3.0.2.3');
// Configuration
if (is_file('config.php')) {
require_once('config.php');
}
// Install
require_once(DIR_SYSTEM . 'library/debug.php');/*Добавил debuger*/
if (!defined('DIR_APPLICATION')) {
header('Location: ../install/index.php');
exit;
}
// Startup
require_once(DIR_SYSTEM . 'startup.php');
start('admin');
echo !DEBUG ? null : Debug::show($sysstart);/*Добавил debuger*/

3. файл \system\library\db\mysql.php и mysqli.php добавляем:

     3.1. В начало файла после namespace DB;        


use DEBUG;

     3.2 в mysql.php
        // Строку $resource = mysql_query($sql, $this->connection); заменить на:       


	$sysstart = microtime(true); /*Добавил debuger*/
        $resource = mysql_query($sql, $this->connection);
        $row = array();    /*Добавил debuger*/    
        if(DEBUG){/*Добавил debuger*/
            $caller = debug_backtrace();/*Добавил debuger*/
            $row['file'] = $caller[1]['file'];/*Добавил debuger*/
            $row['line'] = $caller[1]['line'];/*Добавил debuger*/            
            $row['Duration'] = round(( microtime(true) - $sysstart), 5);/*Добавил debuger*/
            $row['Query'] = $sql;/*Добавил debuger*/            
            Debug::$_profs[] =  $row;/*Добавил debuger*/
        }

      
       3.3 в mysqli.php
        //Строку $query = $this->connection->query($sql); заменить на:


	$sysstart = microtime(true); /*Добавил debuger*/
        $query = $this->connection->query($sql);
        $row = array(); /*Добавил debuger*/    
        if(DEBUG){/*Добавил debuger*/
            $caller = debug_backtrace();/*Добавил debuger*/
            $row['file'] = $caller[1]['file'];/*Добавил debuger*/
            $row['line'] = $caller[1]['line'];/*Добавил debuger*/            
            $row['Duration'] = round(( microtime(true) - $sysstart), 5);/*Добавил debuger*/
            $row['Query'] = $sql;/*Добавил debuger*/            
            Debug::$_profs[] =  $row;/*Добавил debuger*/
        }

 

4. Для вывода информации request в  файле \system\library\request.php меняем строки:

        $this->get = $this->clean($_GET);
        $this->post = $this->clean($_POST);
        $this->request = $this->clean($_REQUEST);
        $this->cookie = $this->clean($_COOKIE);
        $this->files = $this->clean($_FILES);
        $this->server = $this->clean($_SERVER);
        
        на:


	$this->get = $this->clean($_GET);
        $key ='GET';
        Debug::$_request[$key] =  $_GET;
        $this->post = $this->clean($_POST);
        $key ='POST';
        Debug::$_request[$key] =  $_POST;
        $this->request = $this->clean($_REQUEST);
        $key ='REQUEST';
        Debug::$_request[$key] =  $_REQUEST;
        $this->cookie = $this->clean($_COOKIE);
        $key ='COOKIE';
        Debug::$_request[$key] =  $_COOKIE;
        $this->files = $this->clean($_FILES);
        $key ='FILES';
        Debug::$_request[$key] =  $_FILES;
        $this->server = $this->clean($_SERVER);
        $key ='SERVER';
        Debug::$_request[$key] =  $_SERVER;


        
        Или просто добавить:


	$key ='GET';
        Debug::$_request[$key] =  $_GET;
        $key ='POST';
        Debug::$_request[$key] =  $_POST;
        $key ='REQUEST';
        Debug::$_request[$key] =  $_REQUEST;
        $key ='COOKIE';
        Debug::$_request[$key] =  $_COOKIE;
        $key ='FILES';
        Debug::$_request[$key] =  $_FILES;
        $key ='SERVER';
        Debug::$_request[$key] =  $_SERVER;

        
5. Файл \system\library\session.php добавляем строки в функцию отображает сессию в реквест
public function start($key = 'default', $value = '') перед return $this->session_id;


	$key ='SESSION';
        Debug::$_request[$key] =  $this->data;

 

 

 

 

debugger_0.0.2.7z

Змінено користувачем zetrox
Добавил измененный debugger
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...
  • 2 weeks later...
В 27.06.2017 в 17:39, doronus сказал:

Notice: Array to string conversion in .../system/library/debug.php on line 170
после футера

Данную ошибку выкидывает в опере! 

+ поправь в system\library\debug.php 174 строку замени на:

 $f .= '<tr valign="top"><td>-</td><td>-</td><td>Empty</td></tr>';


 

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...
  • 5 months later...
On 6/27/2017 at 4:39 PM, doronus said:

Notice: Array to string conversion in .../system/library/debug.php on line 170
после футера

 

On 7/8/2017 at 9:45 AM, zetrox said:

Данную ошибку выкидывает в опере! 

+ поправь в system\library\debug.php 174 строку замени на:


 $f .= '<tr valign="top"><td>-</td><td>-</td><td>Empty</td></tr>';


 

 

Строку /system/library/debug.php on line 170

$f .= '<tr valign="top"><td>' . $c . ' </td><td> ' . $k . ' </td><td> ' . $r . '</td></tr>';

заменить на:

 

$f .= '<tr valign="top"><td>' . $c . ' </td><td> ' . $k . ' </td><td> ' . (is_array($r) ? json_encode($r) : $r) . '</td></tr>';

 

Все вместе:

 

        // File: .../system/library/debug.php
		/* Request */
        $request = self::$_request;
        $f .= '<div id="ptb_data_cont_request" class="ptb_data_cont" style="display: none;">
                  <ul class="ptb_tabs">
                    <li id="ptb_tab_request_default">Request <span>(' . count($request) . ')</span></li>
                  </ul>
                  <div id="ptb_tab_cont_request_default" class="ptb_tab_cont">';

        foreach ($request as $key => $row) {
            $f .= '<table class="ptb_tab_cont_table">
                      <tbody>
                        <tr>
                          <th style="width:20px;"></th>
                          <th style="width:210px;"></th>
                          <th>' . $key . '</th>
                        </tr>';
            $c = 1;
            if ($row) {
                foreach ($row as $k => $r) {
                    $f .= '<tr valign="top"><td>' . $c . ' </td><td> ' . $k . ' </td><td> ' . (is_array($r) ? json_encode($r) : $r) . '</td></tr>';
                    $c++;
                }
            } else {
                $f .= '<tr valign="top"><td>-</td><td>-</td><td>Empty</td></tr>';
            }
            unset($c);

            $f .= '</tbody>
                    </table>';
        }

 

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Установил для ocstore 2.3. Все прекрасно за исключением того, что сайт сообщает о том что страница не найдена. А как вообще регулировать включение/выключение панели отладчика?

Надіслати
Поділитися на інших сайтах


On 2/22/2018 at 8:38 AM, Fisco said:

Установил для ocstore 2.3. Все прекрасно за исключением того, что сайт сообщает о том что страница не найдена. А как вообще регулировать включение/выключение панели отладчика?

 

файлы config.php

define('DEBUG', false); //define('DEBUG', true);

 

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...
  • 1 month later...
  • 6 months later...

Добрый день! с 5 пунктом из инструкции я чтот так и не понял, куда и что нужно добавить. Подскажите пожалуйста.

 

В 17.06.2017 в 15:13, zetrox сказал:

Readme для Opencart 2.3  + кое-какая правка в debug.php + обновленный geshi

  Скрыть контент

 

Установка:

1. Копируем файлы из папок admin и system в директорую установленного магазина

2. В файл \config.php и \admin\config.php добавляем в конец:

    



//debug
define('DEBUG', true);

2. Файл \index.php   и admin\index.php   

   2.1  \index.php



// рассчет времени работы
$sysstart = microtime(true);/*Добавил debuger*/
// рассчет памяти
function_exists('memory_get_usage') ? define('MEM_USAGE', memory_get_usage()) : null;/*Добавил debuger*/
// Version
define('VERSION', '2.3.0.2.3');
// Configuration
if (is_file('config.php')) {
    require_once('config.php');
}
// Install
require_once(DIR_SYSTEM . 'library/debug.php');/*Добавил debuger*/
if (!defined('DIR_APPLICATION')) {
    header('Location: install/index.php');
    exit;
}
// Startup
require_once(DIR_SYSTEM . 'startup.php');
start('catalog');
echo !DEBUG ? null : Debug::show($sysstart);/*Добавил debuger*/

    2.2 admin\index.php 



// рассчет времени работы
$sysstart = microtime(true);/*Добавил debuger*/
// рассчет памяти
function_exists('memory_get_usage') ? define('MEM_USAGE', memory_get_usage()) : null;/*Добавил debuger*/
// Version
define('VERSION', '2.3.0.2.3');
// Configuration
if (is_file('config.php')) {
require_once('config.php');
}
// Install
require_once(DIR_SYSTEM . 'library/debug.php');/*Добавил debuger*/
if (!defined('DIR_APPLICATION')) {
header('Location: ../install/index.php');
exit;
}
// Startup
require_once(DIR_SYSTEM . 'startup.php');
start('admin');
echo !DEBUG ? null : Debug::show($sysstart);/*Добавил debuger*/

3. файл \system\library\db\mysql.php и mysqli.php добавляем:

     3.1. В начало файла после namespace DB;        



use DEBUG;

     3.2 в mysql.php
        // Строку $resource = mysql_query($sql, $this->connection); заменить на:       



	$sysstart = microtime(true); /*Добавил debuger*/
        $resource = mysql_query($sql, $this->connection);
        $row = array();    /*Добавил debuger*/    
        if(DEBUG){/*Добавил debuger*/
            $caller = debug_backtrace();/*Добавил debuger*/
            $row['file'] = $caller[1]['file'];/*Добавил debuger*/
            $row['line'] = $caller[1]['line'];/*Добавил debuger*/            
            $row['Duration'] = round(( microtime(true) - $sysstart), 5);/*Добавил debuger*/
            $row['Query'] = $sql;/*Добавил debuger*/            
            Debug::$_profs[] =  $row;/*Добавил debuger*/
        }

      
       3.3 в mysqli.php
        //Строку $query = $this->connection->query($sql); заменить на:



	$sysstart = microtime(true); /*Добавил debuger*/
        $query = $this->connection->query($sql);
        $row = array(); /*Добавил debuger*/    
        if(DEBUG){/*Добавил debuger*/
            $caller = debug_backtrace();/*Добавил debuger*/
            $row['file'] = $caller[1]['file'];/*Добавил debuger*/
            $row['line'] = $caller[1]['line'];/*Добавил debuger*/            
            $row['Duration'] = round(( microtime(true) - $sysstart), 5);/*Добавил debuger*/
            $row['Query'] = $sql;/*Добавил debuger*/            
            Debug::$_profs[] =  $row;/*Добавил debuger*/
        }

 

4. Для вывода информации request в  файле \system\library\request.php меняем строки:

        $this->get = $this->clean($_GET);
        $this->post = $this->clean($_POST);
        $this->request = $this->clean($_REQUEST);
        $this->cookie = $this->clean($_COOKIE);
        $this->files = $this->clean($_FILES);
        $this->server = $this->clean($_SERVER);
        
        на:



	$this->get = $this->clean($_GET);
        $key ='GET';
        Debug::$_request[$key] =  $_GET;
        $this->post = $this->clean($_POST);
        $key ='POST';
        Debug::$_request[$key] =  $_POST;
        $this->request = $this->clean($_REQUEST);
        $key ='REQUEST';
        Debug::$_request[$key] =  $_REQUEST;
        $this->cookie = $this->clean($_COOKIE);
        $key ='COOKIE';
        Debug::$_request[$key] =  $_COOKIE;
        $this->files = $this->clean($_FILES);
        $key ='FILES';
        Debug::$_request[$key] =  $_FILES;
        $this->server = $this->clean($_SERVER);
        $key ='SERVER';
        Debug::$_request[$key] =  $_SERVER;


        
        Или просто добавить:



	$key ='GET';
        Debug::$_request[$key] =  $_GET;
        $key ='POST';
        Debug::$_request[$key] =  $_POST;
        $key ='REQUEST';
        Debug::$_request[$key] =  $_REQUEST;
        $key ='COOKIE';
        Debug::$_request[$key] =  $_COOKIE;
        $key ='FILES';
        Debug::$_request[$key] =  $_FILES;
        $key ='SERVER';
        Debug::$_request[$key] =  $_SERVER;

        
5. Файл \system\library\session.php добавляем строки в функцию отображает сессию в реквест
public function start($key = 'default', $value = '') перед return $this->session_id;



	$key ='SESSION';
        Debug::$_request[$key] =  $this->data;

 

 

 

Надіслати
Поділитися на інших сайтах


  • 3 months later...
  • 1 month later...

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

UPD:
Кстати еще неплохой аналог.

Надіслати
Поділитися на інших сайтах

  • 7 months later...

В футере выдает такую ошибку

Unknown: Function create_function() is deprecated in system/helper/geshi/geshi.php on line 4698

Подскажите что не так сделано?

Спасибо!

Надіслати
Поділитися на інших сайтах

  • 10 months later...
В 14.11.2019 в 10:02, max1985 сказал:

В футере выдает такую ошибку


Unknown: Function create_function() is deprecated in system/helper/geshi/geshi.php on line 4698

Подскажите что не так сделано?

Спасибо!

Обновить geshi https://github.com/GeSHi/geshi-1.0/releases/tag/v1.0.9.1

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.