PHP Console allows you to handle PHP errors & excepions, dump variables, execute PHP code remotely and many other things using Google Chrome extension PHP Console and PhpConsole server library.
- See presentation video.
- Install Google Chrome extension PHP Console.
- See how it works on live demo page.
- PHP Console extension features list and screenshots.
- PHP Console server library features list.
- PHP Console extension must be installed on Google Chrome.
- PHP 5.3 (or later) on server.
For projects with PHP < 5.3 you can try to use old deprecated version of PHP Console. But mention that actual last version is much more functional.
{
"require": {
"php-console/php-console": "dev-master"
}
}
This is the most recommended way, so PhpConsole will be autoloaded using Composer PSR-0 autoloader. Also it can be easy updated to last version using composer update
.
git clone https://github.com/barbushin/php-console.git php-console
svn checkout https://github.com/barbushin/php-console/trunk php-console
Download and extract repository archive. Include in your project using:
require_once('/path/to/php-console/src/PhpConsole/__autoload.php');
Download PhpConsole.phar. Include in your project using:
require_once('phar://path/to/PhpConsole.phar');
See http://www.yiiframework.com/extension/php-console
You can try most of PHP Console features on live demo server.
There is a \PhpConsole\Connector class that initializes connection between PHP server and Google Chrome extension. Connection is initalized when \PhpConsole\Connector
instance is initialized:
$connector = \PhpConsole\Connector::getInstance();
\PhpConsole\Connector
uses headers to communicate with client, so it must be initialized before any output.
If you want to see errors sources and traces paths more short, call:
$connector->setSourcesBasePath('/path/to/project');
So paths like /path/to/project/module/file.php
will be displayed on client as /module/file.php
.
If you internal server encoding is not UTF-8, so you need to call:
$connector->setServerEncoding('CP1251');
PhpConsole server library is optimized for lazy initialization only for clients that have Google Chrome extension PHP Console installed. There is example of correct initialization PhpConsole on your production server.
PHP Console provide different ways to protect
$connector->setPassword('yohoho123', true);
Clients will need to enter password to get access to PHP Console server data. All passwords are stored on client as SHA-256 hashes. Second argument says that PHP Console authorization token will depends on client IP.
$connector->enableSslOnlyMode();
So all PHP Console clients will be automatically redirected to HTTPS.
$connector->setAllowedIpMasks(array('192.168.*.*'));
There is a \PhpConsole\Handler class that initializes PHP errors & exceptions handlers and provides the next features:
- Handle PHP errors(+fatal & memory limit errors) and exceptions.
- Ignore repeated errors.
- Call previously defined errors and exceptions handlers.
- Handle caught exceptions using
$handler->handleException($exception)
. - Debug vars using
$handler->debug($var, 'some.tags')
.
Initialize \PhpConsole\Handler
in the top of your main project script:
$handler = PhpConsole\Handler::getInstance();
/* You can override default Handler behavior:
$handler->setHandleErrors(false); // disable errors handling
$handler->setHandleExceptions(false); // disable exceptions handling
$handler->setCallOldHandlers(false); // disable passing errors & exceptions to prviously defined handlers
*/
$handler->start(); // initialize handlers
PHP Console has multifunctional and smart vars dumper that allows to
- Dump any type variable.
- Dump protected and private objects properties.
- Limit dump by level, items count, item size and total size(see
$connector->getDumper()
). - Dump objects class name.
- Smart dump of callbacks and Closure.
- Detect dump call source & trace(call
$connector->getDebugDispatcher()->detectTraceAndSource = true
).
Longest native debug method call:
\PhpConsole\Connector::getInstance()->getDebugDispatcher()->dispatchDebug($var, 'some.tags');`
Shorter call debug from Handler:
\PhpConsole\Handler::getInstance()->debug($var, 'some.tags');
Shortest call debug using global PC
class
\PhpConsole\Helper::register(); // it will register global PC class
// ...
PC::debug($var, 'tag');
PC::tag($var);
Custom call debug by user defined function
function d($var, $tags = null) {
\PhpConsole\Connector::getInstance()->getDebugDispatcher()->debug($var, $tags, 1);
}
d($var, 'some.tags');
- Debug tags argument is optional.
- Tags is a string with tags separated by dot(e.g. "low.db").
- Tags can be used to identify what exactly var was dumped.
- You can configure client to ignore displaying some tags.
PHP Console provide a way to execute PHP code on your server remotely, from Google Chrome extension terminal.
- Remote PHP code execution allowed only in password protected mode
- Every eval request is signed with unique SHA-256 token
- Result contains:
output
,return
andtime
data - Errors & exception occurred during PHP code execution will be handled
$connector = PhpConsole\Connector::getInstance();
$connector->setPassword($password);
// 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
There is PHP Console implementation of PSR-3 interface. to integrate PHP Console with PSR-3 compitable loggers(e.g. Monolog). See \PhpConsole\PsrLogger.
Read this article if you want to configure PHP Console extension to open errors/exceptions source file:line right in your IDE, just by click on the button in Notification popup.
If you have used PhpConsole v1.x
and want to migrate to v3.x
without any code changes, so just use \PhpConsole\OldVersionAdapter:
\PhpConsole\OldVersionAdapter::register(); // register PhpConsole v1.x 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 want :)
\PhpConsole\Connector::getInstance()->setServerEncoding('cp1251');
\PhpConsole\Helper::register();
PC::debug('Debug using new methods');
But, anyway, if you can't migrate to new version of PHP Console because of using PHP < 5.3 on your servers, then you can use old deprecated version of PHP Console.