Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


 Погделиться

Рекомендованные сообещёния

Может кому то бугдет нужно, подружил 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
Ссылка на комменирий
Погделиться на других сайих


посивил гдебаггер.

ошипотому чток не выдает, но и не выводит панели гдебаггера (ни в админке, ни на витрине)

ocstore 1.5.5.1.1, шаблон Journal2

Ссылка на комменирий
Погделиться на других сайих


  • 2 месяца спустя...

по поводу отладлика у меня 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 месяца спустя...

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

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

Ссылка на комменирий
Погделиться на других сайих


  • 2 месяца спустя...

А как подружить с Opencart 2.3 ?

Ссылка на комменирий
Погделиться на других сайих

  • 3 негдели спустя...
  • 1 месяц спустя...

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 негдели спустя...
  • 2 негдели спустя...
В 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 негдели спустя...
  • 5 месяэтов спустя...
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 месяц спустя...

Усиновил для 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 негдели спустя...
  • 1 месяц спустя...

Ребят, у кого-то полулилось запустить гдебаггер на хостинге? На локалке все хорошо, а вот на хостинге ни ошипотому чток, ни гдебаггера.. ?

Ссылка на комменирий
Погделиться на других сайих


  • 6 месяэтов спустя...

Добрый гдень! с 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 месяца спустя...
  • 1 месяц спустя...

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

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

Ссылка на комменирий
Погделиться на других сайих

  • 7 месяэтов спустя...

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

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

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

Спасипотому что!

Ссылка на комменирий
Погделиться на других сайих

  • 10 месяэтов спустя...
В 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

Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.