/** * 开启调试输出 * @method _initDebug * @author NewFuture */ public function _initDebug() { if (Config::get('isdebug')) { /*加载 PHP Console Debug模块*/ Yaf_Loader::import('PhpConsole/__autoload.php'); $connector = PhpConsole\Connector::getInstance(); if ($connector->isActiveClient()) { Log::write('PHP Console 已经链接', 'INFO'); $handler = PhpConsole\Handler::getInstance(); $dispatcher = $connector->getDebugDispatcher(); $handler->start(); $connector->setSourcesBasePath(APP_PATH); $connector->setServerEncoding('utf8'); $dispatcher->detectTraceAndSource = true; //跟踪信息 if ($pwd = Config::get('debug.auth')) { $connector->setPassword($pwd); $evalProvider = $connector->getEvalDispatcher()->getEvalProvider(); // $evalProvider->disableFileAccessByOpenBaseDir(); // means disable functions like include(), require(), file_get_contents() & etc // $evalProvider->addSharedVar('uri', $_SERVER['REQUEST_URI']); // so you can access $_SERVER['REQUEST_URI'] just as $uri in terminal // $evalProvider->addSharedVarReference('post', $_POST); $connector->startEvalRequestsListener(); } } PhpConsole\Helper::register(); } }
public static function debug($var, $tags) { //$buffer = ob_get_contents(); //ob_end_clean(); //ob_start(); PhpConsole\Connector::getInstance()->getDebugDispatcher()->dispatchDebug($var, $tags, 1); //ob_end_clean(); //ob_start(); //echo $buffer; }
private function configureEvalProvider() { $connector = PhpConsole\Connector::getInstance(); $connector->setPassword('123'); // Configure eval provider $evalProvider = $connector->getEvalDispatcher()->getEvalProvider(); $evalProvider->addSharedVar('post', $_POST); // so "return $post" code will return $_POST $evalProvider->setOpenBaseDirs(array(__DIR__)); // see http://php.net/open-basedir $connector->startEvalRequestsListener(); // must be called in the end of all configurations }
function gafa($var, $tags = null) { PhpConsole\Connector::getInstance()->getDebugDispatcher()->dispatchDebug($var, $tags, 1); }
<?php $connector = PhpConsole\Connector::getInstance(); $connector->setSourcesBasePath(PhpConsole\Test\getClientEmulator()->getScriptsBaseDir());
function _debug($var, $tags = null) { if (PhpConsole\Connector::getInstance()->isActiveClient()) { PhpConsole\Connector::getInstance()->getDebugDispatcher()->dispatchDebug($var, $tags, 1); } }
/** * * @author Moshe Brevda mbrevda => gmail ~ com */ function dbug_write($txt, $check = false) { global $amp_conf; // dbug can be used prior to bootstrapping and initialization, so we set // it if not defined here to a default. // if (!isset($amp_conf['FPBXDBUGFILE'])) { $amp_conf['FPBXDBUGFILE'] = '/var/log/asterisk/freepbx_debug'; } // If not check set max size just under 2G which is the php limit before it gets upset if ($check) { $max_size = 52428800; } else { $max_size = 2000000000; } //optionaly ensure that dbug file is smaller than $max_size $size = file_exists($amp_conf['FPBXDBUGFILE']) ? sprintf("%u", filesize($amp_conf['FPBXDBUGFILE'])) + strlen($txt) : 0; if ($size > $max_size) { file_put_contents($amp_conf['FPBXDBUGFILE'], $txt); } else { file_put_contents($amp_conf['FPBXDBUGFILE'], $txt, FILE_APPEND); } if ($amp_conf['PHP_CONSOLE']) { PhpConsole\Connector::getInstance()->getDebugDispatcher()->dispatchDebug($txt, 'dbug'); } }
<?php require_once __DIR__ . '/../../src/PhpConsole/__autoload.php'; if (PhpConsole\Connector::getInstance()->isActiveClient()) { // ... any PHP Console initialization & configuration code } // if you're calling PC::debug() or any other PC class methods in your code, so PhpConsole\Helper::register() must be called anyway PhpConsole\Helper::register(); echo 'If you want to make PHP Console initialization more lightweight on your server, then you should execute initialization code only if <code>PhpConsole\\Connector->getInstance()->isActiveClient()</code> returns <code>true</code>';
<?php require_once __DIR__ . '/../../src/PhpConsole/__autoload.php'; PhpConsole\OldVersionAdapter::register(); // register PhpConsole class emulator // Call old PhpConsole v1 methods as is PhpConsole::start(true, true, $_SERVER['DOCUMENT_ROOT']); PhpConsole::debug('Debug using old method PhpConsole::debug()', 'some,tags'); debug('Debug using old function debug()', 'some,tags'); echo $undefinedVar; PhpConsole::getInstance()->handleException(new Exception('test')); // Call new PhpConsole methods, if you need :) PhpConsole\Connector::getInstance()->setServerEncoding('cp1251'); PhpConsole\Helper::register(); PC::debug('Debug using new methods'); echo 'So there is an easy way to migrate from PhpConsole v1.x to v3.x without any code changes';
<?php $_SERVER['REMOTE_ADDR'] = $clientIp; PhpConsole\Connector::getInstance()->setAllowedIpMasks($ipMasks);
// Debug some mixed variable class DebugExample { private $privateProperty = 1; protected $protectedProperty = 2; public $publicProperty = 3; public $selfProperty; public function __construct() { $this->selfProperty = $this; } public function someMethod() { } } PhpConsole\Connector::getInstance()->getDebugDispatcher()->setDumper(new PhpConsole\Dumper(2, 10, 40)); $s = new stdClass(); $s->asd = array(array(123)); PC::debug(array('null' => null, 'boolean' => true, 'longString' => '11111111112222222222333333333344444444445', 'someObject' => new DebugExample(), 'someCallback' => array(new DebugExample(), 'someMethod'), 'someClosure' => function () { }, 'someResource' => fopen(__FILE__, 'r'), 'manyItemsArray' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), 'deepLevelArray' => array(1 => array(2 => array(3))))); // Trace debug call PC::getConnector()->getDebugDispatcher()->detectTraceAndSource = true; function a() { b(); } function b() { PC::debug('Message with source & trace detection'); } a();
<?php if (extension_loaded('mbstring')) { ini_set('mbstring.internal_encoding', $encoding); ini_set('mbstring.http_output', $encoding); ini_set('mbstring.func_overload', 2); } PhpConsole\Connector::getInstance()->setServerEncoding($encoding);
<?php $_SERVER['REMOTE_ADDR'] = $clientIp; PhpConsole\Connector::getInstance()->setPassword($password, $publicKeyByIp);
<?php PhpConsole\Connector::getInstance()->enableSslOnlyMode();
/** * Initialize PHP Console. * * @since 1.0.0 */ public function init() { if (!class_exists('PhpConsole\\Connector')) { return; } $options = $this->options; $password = isset($options['password']) ? $options['password'] : ''; // Display admin notice and abort if no password if (!$password) { add_action('admin_notices', array($this, 'password_notice')); return; // abort } // Selectively remove slashes added by WordPress as expected by PhpConsole if (isset($_POST[PhpConsole\Connector::POST_VAR_NAME])) { $_POST[PhpConsole\Connector::POST_VAR_NAME] = stripslashes_deep($_POST[PhpConsole\Connector::POST_VAR_NAME]); } $connector = PhpConsole\Connector::getInstance(); $connector->setPassword($password); $handler = PhpConsole\Handler::getInstance(); if (PhpConsole\Handler::getInstance()->isStarted() != true) { $handler->start(); } $enableSslOnlyMode = isset($options['ssl']) ? !empty($options['ssl']) ? $options['ssl'] : '' : ''; if ($enableSslOnlyMode == true) { $connector->enableSslOnlyMode(); } $allowedIpMasks = isset($options['ip']) ? !empty($options['ip']) ? explode(',', $options['ip']) : '' : ''; if (is_array($allowedIpMasks) && !empty($allowedIpMasks)) { $connector->setAllowedIpMasks((array) $allowedIpMasks); } $evalProvider = $connector->getEvalDispatcher()->getEvalProvider(); $evalProvider->addSharedVar('uri', $_SERVER['REQUEST_URI']); $evalProvider->addSharedVarReference('post', $_POST); // $evalProvider->disableFileAccessByOpenBaseDir(); $openBaseDirs = array(ABSPATH, get_template_directory()); $evalProvider->addSharedVarReference('dirs', $openBaseDirs); $evalProvider->setOpenBaseDirs($openBaseDirs); $connector->startEvalRequestsListener(); }
<?php PhpConsole\Connector::getInstance()->getDebugDispatcher()->dispatchDebug($data, isset($tags) ? $tags : null, !empty($withTraceAndSource), isset($skipTraceCalls) ? $skipTraceCalls : 1);