Jump to content

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 запросы.

Edited by dimmma73
  • +1 1

Share this post


Link to post
Share on other sites

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

 

В файле 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;
}

Edited by dimmma73
  • +1 1

Share this post


Link to post
Share on other sites

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

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

ocstore 1.5.5.1.1, шаблон Journal2

Share this post


Link to post
Share on other sites

по поводу отладчика у меня 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'];
}

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 27.04.2017 в 16:46, Seofisher сказал:

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

Все как в ридми, плюс то что на картинке

Clip2net_170512173455.png

Share this post


Link to post
Share on other sites

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

Edited by zetrox
Добавил измененный debugger

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 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>';


 

Share this post


Link to post
Share on other sites

Opencart 2.3 
Fatal error: Cannot redeclare class Debug in /system/library/debug.php on line 2

Share this post


Link to post
Share on other sites
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>';
        }

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
On 2/22/2018 at 8:38 AM, Fisco said:

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

 

файлы config.php

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

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Добрый день! с 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;

 

 

 

Share this post


Link to post
Share on other sites

Подскажите как прикрутить к opencart 3 ?

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By barl0g
      Просьба к более опытным программистам описать каким образом правильно организовать отладку ошибок, возникающих при конфликте модулей в opencart?
       
      Например, программист натыкается на ошибку типа:
      Parse error: syntax error, unexpected 'else' (T_ELSE) in /home/user/www/opencart/system/storage/modification/catalog/view/theme/default/template/product/product.tpl on line 198 В phpstorm breakpoint в файлах *.tpl не устанавливается (?). Каким образом правильно организовать отладку в таких случаях?
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.