Esempio n. 1
0
 private function getLaraextConsole()
 {
     if (is_null($this->__laraext_console)) {
         $params = \Config::get("laraext.console");
         if (!$params['enabled']) {
             return null;
         }
         if (empty($GLOBALS['laraext_console_storage_installed'])) {
             \PhpConsole\Connector::setPostponeStorage(new \PhpConsole\Storage\File(storage_path('laraext-php-console.dat'), true));
             $GLOBALS['laraext_console_storage_installed'] = true;
         }
         $connector = \PhpConsole\Connector::getInstance();
         if (!empty($params['password'])) {
             $connector->setPassword($params['password'], true);
         }
         if (!empty($params['ips'])) {
             $connector->setAllowedIpMasks(explode(",", $params['ips']));
         }
         $this->__laraext_console = \PhpConsole\Handler::getInstance();
         if (!$this->__laraext_console->isStarted()) {
             if (empty($params['catch_errors'])) {
                 $this->__laraext_console->setHandleErrors(false);
                 $this->__laraext_console->setHandleExceptions(false);
                 $this->__laraext_console->setCallOldHandlers(false);
             }
             $this->__laraext_console->start();
         }
     }
     return $this->__laraext_console;
 }
 /**
  * Init.
  *
  * @since 1.0.0
  */
 public function __construct()
 {
     $this->plugin_name = 'WP PHP Console';
     $this->plugin_slug = 'wp-php-console';
     $this->version = '1.4.0';
     $this->options = $this->get_options();
     // Bail out if PHP Console can't be found
     if (!class_exists('PhpConsole\\Connector')) {
         return;
     }
     // By default PHP Console uses PhpConsole\Storage\Session for postponed responses,
     // so all temporary data will be stored in $_SESSION.
     // But there is some problem with frameworks like WordPress that override PHP session handler.
     // PHP Console has alternative storage drivers for this - we will write to a temporary file:
     $phpcdir = dirname(__FILE__) . '/tmp';
     $make_dir = wp_mkdir_p($phpcdir);
     if ($make_dir === true) {
         try {
             $storage = new PhpConsole\Storage\File($phpcdir . '/' . md5(__FILE__) . '_pc.data');
             PhpConsole\Connector::setPostponeStorage($storage);
         } catch (\Exception $e) {
             // TODO $storage is under DOCUMENT_ROOT - it's insecure but did not find another solution in WP
             // $this->print_notice_exception( $e );
         }
     }
     // Perform PHP Console initialisation required asap for other code to be able to output to the JavaScript console
     $connector = PhpConsole\Connector::getInstance();
     // Apply 'register' option to PHP Console
     if (!empty($this->options['register']) && !class_exists('PC', false)) {
         // Only if PC not registered yet
         try {
             PhpConsole\Helper::register();
         } catch (\Exception $e) {
             $this->print_notice_exception($e);
         }
     }
     // Apply 'stack' option to PHP Console
     if (!empty($this->options['stack'])) {
         $connector->getDebugDispatcher()->detectTraceAndSource = true;
     }
     // Apply 'short' option to PHP Console
     if (!empty($this->options['short'])) {
         try {
             $connector->setSourcesBasePath($_SERVER['DOCUMENT_ROOT']);
         } catch (\Exception $e) {
             $this->print_notice_exception($e);
         }
     }
     // Translation
     add_action('plugins_loaded', array($this, 'set_locale'));
     // Admin menu
     add_action('admin_menu', array($this, 'register_settings_page'));
     // Delay further PHP Console initialisation to have more context during Remote PHP execution
     add_action('wp_loaded', array($this, 'init'));
 }
Esempio n. 3
0
 private function initConnector(Connector $connector = null)
 {
     if (!$connector) {
         if ($this->options['dataStorage']) {
             Connector::setPostponeStorage($this->options['dataStorage']);
         }
         $connector = Connector::getInstance();
     }
     if ($this->options['registerHelper'] && !Helper::isRegistered()) {
         Helper::register();
     }
     if ($this->options['enabled'] && $connector->isActiveClient()) {
         if ($this->options['useOwnErrorsHandler'] || $this->options['useOwnExceptionsHandler']) {
             $handler = VendorPhpConsoleHandler::getInstance();
             $handler->setHandleErrors($this->options['useOwnErrorsHandler']);
             $handler->setHandleExceptions($this->options['useOwnExceptionsHandler']);
             $handler->start();
         }
         if ($this->options['sourcesBasePath']) {
             $connector->setSourcesBasePath($this->options['sourcesBasePath']);
         }
         if ($this->options['serverEncoding']) {
             $connector->setServerEncoding($this->options['serverEncoding']);
         }
         if ($this->options['password']) {
             $connector->setPassword($this->options['password']);
         }
         if ($this->options['enableSslOnlyMode']) {
             $connector->enableSslOnlyMode();
         }
         if ($this->options['ipMasks']) {
             $connector->setAllowedIpMasks($this->options['ipMasks']);
         }
         if ($this->options['headersLimit']) {
             $connector->setHeadersLimit($this->options['headersLimit']);
         }
         if ($this->options['detectDumpTraceAndSource']) {
             $connector->getDebugDispatcher()->detectTraceAndSource = true;
         }
         $dumper = $connector->getDumper();
         $dumper->levelLimit = $this->options['dumperLevelLimit'];
         $dumper->itemsCountLimit = $this->options['dumperItemsCountLimit'];
         $dumper->itemSizeLimit = $this->options['dumperItemSizeLimit'];
         $dumper->dumpSizeLimit = $this->options['dumperDumpSizeLimit'];
         $dumper->detectCallbacks = $this->options['dumperDetectCallbacks'];
         if ($this->options['enableEvalListener']) {
             $connector->startEvalRequestsListener();
         }
     }
     return $connector;
 }
Esempio n. 4
0
 protected function initSession()
 {
     $cacheDir = $this->console->getContainer()->get('kernel')->getCacheDir();
     $file = $cacheDir . '/vitre_php_console.data';
     Connector::setPostponeStorage(new \PhpConsole\Storage\File($file));
 }
 protected function initPhpConsole()
 {
     if (!$this->dataStorage) {
         $this->dataStorage = new PhpConsole\Storage\File(storage_path('php-console.dat'), true);
     }
     if ($this->dataStorage instanceof \PhpConsole\Storage\Session) {
         throw new \Exception('Unable to use PhpConsole\\Storage\\Session as PhpConsole storage interface because of problems with overridden $_SESSION handler in Laravel');
     }
     Connector::setPostponeStorage($this->dataStorage);
     $connector = Connector::getInstance();
     if ($this->registerHelper) {
         Helper::register();
     }
     $isActiveClient = $connector->isActiveClient();
     if (!$this->isEnabled || !$isActiveClient) {
         if ($isActiveClient) {
             $connector->disable();
         }
         return;
     }
     $handler = Handler::getInstance();
     $handler->setHandleErrors($this->handleErrors);
     $handler->setHandleErrors($this->handleExceptions);
     $handler->start();
     if ($this->sourcesBasePath) {
         $connector->setSourcesBasePath($this->sourcesBasePath);
     }
     if ($this->serverEncoding) {
         $connector->setServerEncoding($this->serverEncoding);
     }
     if ($this->password) {
         $connector->setPassword($this->password);
     }
     if ($this->enableSslOnlyMode) {
         $connector->enableSslOnlyMode();
     }
     if ($this->ipMasks) {
         $connector->setAllowedIpMasks($this->ipMasks);
     }
     if ($this->headersLimit) {
         $connector->setHeadersLimit($this->headersLimit);
     }
     if ($this->detectDumpTraceAndSource) {
         $connector->getDebugDispatcher()->detectTraceAndSource = true;
     }
     $dumper = $connector->getDumper();
     $dumper->levelLimit = $this->dumperLevelLimit;
     $dumper->itemsCountLimit = $this->dumperItemsCountLimit;
     $dumper->itemSizeLimit = $this->dumperItemSizeLimit;
     $dumper->dumpSizeLimit = $this->dumperDumpSizeLimit;
     $dumper->detectCallbacks = $this->dumperDetectCallbacks;
     if ($this->isEvalEnabled) {
         $connector->startEvalRequestsListener();
     }
 }
 protected function initPostponeStorage(Storage $storage = null)
 {
     if ($storage instanceof \PhpConsole\Storage\Session) {
         throw new \Exception('Unable to use PhpConsole\\Storage\\Session as PhpConsole storage interface because of problems with overridden $_SESSION handler in Silex');
     }
     Connector::setPostponeStorage($storage);
 }