Tracy library is a useful helper for everyday PHP programmers. It helps you to:
- quickly detect and correct errors
- log errors
- dump variables
- measure execution time and memory consumption
Implementation
- Download Tracy latest version from https://github.com/nette/tracy/releases
- Open .zip file and copy tracy to your FTP folder include
- Edit file libraries/HTTP_Session/Session.php
- Replace function: function start($name = ‘SessionID’, $id = null) from:
function start($name = 'SessionID', $id = null) { HTTP_Session::name($name); if ($id) { HTTP_Session::id($id); } elseif (is_null(HTTP_Session::detectID())) { HTTP_Session::id($id ? $id : uniqid(dechex(rand()))); } session_start(); if (!isset($_SESSION['__HTTP_Session_Info'])) { $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_STARTED; } else { $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_CONTINUED; } }
to:
function start($name = 'SessionID', $id = null) { HTTP_Session::name($name); if ($id) { HTTP_Session::id($id); } elseif (is_null(HTTP_Session::detectID())) { HTTP_Session::id($id ? $id : uniqid(dechex(rand()))); } //----------- START ITS4YOU TRACY IMPLEMENTATION ----------- $sessionid = session_id(); if(empty($sessionid)) { session_start(); } //----------- END ITS4YOU TRACY IMPLEMENTATION ----------- if (!isset($_SESSION['__HTTP_Session_Info'])) { $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_STARTED; } else { $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_CONTINUED; } }
- Edit file index.php from:
//Overrides GetRelatedList : used to get related query //TODO : Eliminate below hacking solution include_once 'include/Webservices/Relation.php'; include_once 'vtlib/Vtiger/Module.php'; include_once 'includes/main/WebUI.php'; $webUI = new Vtiger_WebUI(); $webUI->process(new Vtiger_Request($_REQUEST, $_REQUEST));
to:
//Overrides GetRelatedList : used to get related query //TODO : Eliminate below hacking solution include_once 'config.php'; include_once 'include/Webservices/Relation.php'; include_once 'vtlib/Vtiger/Module.php'; include_once 'includes/main/WebUI.php'; //----------- START ITS4YOU TRACY IMPLEMENTATION ----------- session_start(); $session_tracy = false; if(isset($_REQUEST['tracy'])){ if($_REQUEST['tracy'] == 'start') { $_SESSION['its4you_tracy'] = true; } else { unset($_SESSION['its4you_tracy']); } } if(isset($_REQUEST['tracylog'])){ if($_REQUEST['tracylog'] == 'start') { $_SESSION['its4you_tracylog'] = true; } else { unset($_SESSION['its4you_tracylog']); } } include_once 'include/tracy/src/tracy.php'; use Tracy\Debugger; $tracy_mode = Debugger::PRODUCTION; if(isset($_SESSION['its4you_tracy'])){ $tracy_mode = Debugger::DEVELOPMENT; } $tracylog_dir = null; if(isset($_SESSION['its4you_tracylog'])){ $rootDirectory = vglobal('root_directory'); $tracylog_dir = $rootDirectory.'logs/'; } Debugger::$logSeverity = E_NOTICE | E_WARNING; Debugger::enable($tracy_mode,$tracylog_dir); //----------- END ITS4YOU TRACY IMPLEMENTATION ----------- $webUI = new Vtiger_WebUI(); $webUI->process(new Vtiger_Request($_REQUEST, $_REQUEST));
- Create folder logs in root directory of Vtiger and set rights to write to this directory
- There is a possibility that logs folder will be already there so make sure to set rights
Usage
You can choose between Debugger error reporting or Error reporting to log directory
Debugger error reporting:
- Enable: add to URL ?tracy=start
- Disable: add to URL ?tracy=stop
Example: xxxxx/test/71new/index.php?tracy=start
If you successfully enabled Tracy, you should see Debugger bar like you see on the picture. Also you have option to move bar and place it where you need on your screen.
How looks Tracy in your Vtiger system
Error reporting to log directory
- Enable: add to URL ?tracylog=start
- Disable: add to URL ?tracylog=stop
If tracylog is enabled, all errors will be saved to error.log / exceptions.log file, which is located in logs directory.
NOTE: There can be enabled just one error reporting. Means you can’t have enabled Debugger reporting and in same time Reporting to log directory.
Leave a Reply