mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-21 22:32:41 +01:00
Add a user-accessible hook for dumping debug code into an install
Summary: Currently, there's no easy way for me to tell a user "run this code from the webserver and tell me what it says". Sometimes installs can add new .php files to, e.g., `webroot/rsrc/`, but this is setup-dependent and not universal. Generally I resort to saying "put this into index.php", but that's error prone and not acceptable on active installs. Add a "debug" controller so I can instead say "put this into support/debug.php, then visit /debug/". Test Plan: Visited /debug/ with and without support/debug.php files. Visited /staus/. Reviewers: vrana, btrahan Reviewed By: vrana CC: aran Differential Revision: https://secure.phabricator.com/D5212
This commit is contained in:
parent
413c65b608
commit
14569ae491
5 changed files with 47 additions and 1 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -27,3 +27,6 @@
|
|||
|
||||
# Impact Font
|
||||
/resources/font/impact.ttf
|
||||
|
||||
# User-accessible hook for adhoc debugging scripts
|
||||
/support/debug.php
|
||||
|
|
|
@ -831,6 +831,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorDaemonLogListView' => 'applications/daemon/view/PhabricatorDaemonLogListView.php',
|
||||
'PhabricatorDaemonLogViewController' => 'applications/daemon/controller/PhabricatorDaemonLogViewController.php',
|
||||
'PhabricatorDaemonReference' => 'infrastructure/daemon/control/PhabricatorDaemonReference.php',
|
||||
'PhabricatorDebugController' => 'applications/system/PhabricatorDebugController.php',
|
||||
'PhabricatorDefaultFileStorageEngineSelector' => 'applications/files/engineselector/PhabricatorDefaultFileStorageEngineSelector.php',
|
||||
'PhabricatorDefaultSearchEngineSelector' => 'applications/search/selector/PhabricatorDefaultSearchEngineSelector.php',
|
||||
'PhabricatorDeveloperConfigOptions' => 'applications/config/option/PhabricatorDeveloperConfigOptions.php',
|
||||
|
@ -1307,7 +1308,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorSortTableExample' => 'applications/uiexample/examples/PhabricatorSortTableExample.php',
|
||||
'PhabricatorSourceCodeView' => 'view/layout/PhabricatorSourceCodeView.php',
|
||||
'PhabricatorStandardPageView' => 'view/page/PhabricatorStandardPageView.php',
|
||||
'PhabricatorStatusController' => 'applications/status/PhabricatorStatusController.php',
|
||||
'PhabricatorStatusController' => 'applications/system/PhabricatorStatusController.php',
|
||||
'PhabricatorStorageFixtureScopeGuard' => 'infrastructure/testing/fixture/PhabricatorStorageFixtureScopeGuard.php',
|
||||
'PhabricatorStorageManagementAPI' => 'infrastructure/storage/management/PhabricatorStorageManagementAPI.php',
|
||||
'PhabricatorStorageManagementDatabasesWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementDatabasesWorkflow.php',
|
||||
|
@ -2337,6 +2338,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorDaemonLogListController' => 'PhabricatorDaemonController',
|
||||
'PhabricatorDaemonLogListView' => 'AphrontView',
|
||||
'PhabricatorDaemonLogViewController' => 'PhabricatorDaemonController',
|
||||
'PhabricatorDebugController' => 'PhabricatorController',
|
||||
'PhabricatorDefaultFileStorageEngineSelector' => 'PhabricatorFileStorageEngineSelector',
|
||||
'PhabricatorDefaultSearchEngineSelector' => 'PhabricatorSearchEngineSelector',
|
||||
'PhabricatorDeveloperConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||
|
|
|
@ -109,6 +109,8 @@ class AphrontDefaultApplicationConfiguration
|
|||
'testpaymentform/' => 'PhortuneStripeTestPaymentFormController',
|
||||
),
|
||||
),
|
||||
|
||||
'/debug/' => 'PhabricatorDebugController',
|
||||
);
|
||||
}
|
||||
|
||||
|
|
39
src/applications/system/PhabricatorDebugController.php
Normal file
39
src/applications/system/PhabricatorDebugController.php
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* This controller eases debugging of application problems that don't repro
|
||||
* locally by allowing installs to add arbitrary debugging code easily. To use
|
||||
* it:
|
||||
*
|
||||
* - Write some diagnostic script.
|
||||
* - Instruct the user to install it in `/support/debug.php`.
|
||||
* - Tell them to visit `/debug/`.
|
||||
*/
|
||||
final class PhabricatorDebugController extends PhabricatorController {
|
||||
|
||||
public function shouldRequireLogin() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public function processRequest() {
|
||||
if (!Filesystem::pathExists($this->getDebugFilePath())) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
$request = $this->getRequest();
|
||||
$user = $request->getUser();
|
||||
|
||||
ob_start();
|
||||
require_once $this->getDebugFilePath();
|
||||
$out = ob_get_clean();
|
||||
|
||||
$response = new AphrontWebpageResponse();
|
||||
$response->setContent(hsprintf('<pre>%s</pre>', $out));
|
||||
return $response;
|
||||
}
|
||||
|
||||
private function getDebugFilePath() {
|
||||
$root = dirname(phutil_get_library_root('phabricator'));
|
||||
return $root.'/support/debug.php';
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue