diff --git a/.gitignore b/.gitignore index f6bc699d3f..41c318a732 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ /conf/custom/* /conf/local/local.json /conf/local/ENVIRONMENT +/conf/local/VERSION diff --git a/conf/default.conf.php b/conf/default.conf.php index 43e4d35a57..1217dc6238 100644 --- a/conf/default.conf.php +++ b/conf/default.conf.php @@ -1,5 +1,9 @@ null, - // Setting this to 'true' will invoke a special setup mode which helps guide - // you through setting up Phabricator. - 'phabricator.setup' => false, - // -- IMPORTANT! Security! -------------------------------------------------- // // IMPORTANT: By default, Phabricator serves files from the same domain the diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index a2caa975b2..e78a5c755e 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -539,13 +539,6 @@ celerity_register_resource_map(array( 'disk' => '/rsrc/image/texture/table_header_hover.png', 'type' => 'png', ), - '/rsrc/image/texture/table_header_tall.png' => - array( - 'hash' => 'b05525601f78d759f1c5e47fd9c1a8aa', - 'uri' => '/res/b0552560/rsrc/image/texture/table_header_tall.png', - 'disk' => '/rsrc/image/texture/table_header_tall.png', - 'type' => 'png', - ), '/rsrc/swf/aphlict.swf' => array( 'hash' => '4b9a9d83bebaf254f3790e87b45c1f92', @@ -600,7 +593,7 @@ celerity_register_resource_map(array( ), 'aphront-dialog-view-css' => array( - 'uri' => '/res/215b3ab1/rsrc/css/aphront/dialog-view.css', + 'uri' => '/res/0ec64c77/rsrc/css/aphront/dialog-view.css', 'type' => 'css', 'requires' => array( @@ -609,7 +602,7 @@ celerity_register_resource_map(array( ), 'aphront-error-view-css' => array( - 'uri' => '/res/048ed376/rsrc/css/aphront/error-view.css', + 'uri' => '/res/410dbe72/rsrc/css/aphront/error-view.css', 'type' => 'css', 'requires' => array( @@ -3254,7 +3247,7 @@ celerity_register_resource_map(array( ), array( 'packages' => array( - '4dff6da8' => + '2b575971' => array( 'name' => 'core.pkg.css', 'symbols' => @@ -3298,7 +3291,7 @@ celerity_register_resource_map(array( 36 => 'phabricator-object-item-list-view-css', 37 => 'global-drag-and-drop-css', ), - 'uri' => '/res/pkg/4dff6da8/core.pkg.css', + 'uri' => '/res/pkg/2b575971/core.pkg.css', 'type' => 'css', ), 'c90b892e' => @@ -3488,19 +3481,19 @@ celerity_register_resource_map(array( 'reverse' => array( 'aphront-attached-file-view-css' => '83f07678', - 'aphront-crumbs-view-css' => '4dff6da8', - 'aphront-dialog-view-css' => '4dff6da8', - 'aphront-error-view-css' => '4dff6da8', - 'aphront-form-view-css' => '4dff6da8', + 'aphront-crumbs-view-css' => '2b575971', + 'aphront-dialog-view-css' => '2b575971', + 'aphront-error-view-css' => '2b575971', + 'aphront-form-view-css' => '2b575971', 'aphront-headsup-action-list-view-css' => 'ec01d039', - 'aphront-headsup-view-css' => '4dff6da8', - 'aphront-list-filter-view-css' => '4dff6da8', - 'aphront-pager-view-css' => '4dff6da8', - 'aphront-panel-view-css' => '4dff6da8', - 'aphront-table-view-css' => '4dff6da8', - 'aphront-tokenizer-control-css' => '4dff6da8', - 'aphront-tooltip-css' => '4dff6da8', - 'aphront-typeahead-control-css' => '4dff6da8', + 'aphront-headsup-view-css' => '2b575971', + 'aphront-list-filter-view-css' => '2b575971', + 'aphront-pager-view-css' => '2b575971', + 'aphront-panel-view-css' => '2b575971', + 'aphront-table-view-css' => '2b575971', + 'aphront-tokenizer-control-css' => '2b575971', + 'aphront-tooltip-css' => '2b575971', + 'aphront-typeahead-control-css' => '2b575971', 'differential-changeset-view-css' => 'ec01d039', 'differential-core-view-css' => 'ec01d039', 'differential-inline-comment-editor' => 'ac53d36a', @@ -3514,7 +3507,7 @@ celerity_register_resource_map(array( 'differential-table-of-contents-css' => 'ec01d039', 'diffusion-commit-view-css' => 'c8ce2d88', 'diffusion-icons-css' => 'c8ce2d88', - 'global-drag-and-drop-css' => '4dff6da8', + 'global-drag-and-drop-css' => '2b575971', 'inline-comment-summary-css' => 'ec01d039', 'javelin-aphlict' => 'c90b892e', 'javelin-behavior' => 'fbeded59', @@ -3584,48 +3577,48 @@ celerity_register_resource_map(array( 'javelin-util' => 'fbeded59', 'javelin-vector' => 'fbeded59', 'javelin-workflow' => 'fbeded59', - 'lightbox-attachment-css' => '4dff6da8', + 'lightbox-attachment-css' => '2b575971', 'maniphest-task-summary-css' => '83f07678', 'maniphest-transaction-detail-css' => '83f07678', 'phabricator-busy' => 'c90b892e', 'phabricator-content-source-view-css' => 'ec01d039', - 'phabricator-core-buttons-css' => '4dff6da8', - 'phabricator-core-css' => '4dff6da8', - 'phabricator-crumbs-view-css' => '4dff6da8', - 'phabricator-directory-css' => '4dff6da8', + 'phabricator-core-buttons-css' => '2b575971', + 'phabricator-core-css' => '2b575971', + 'phabricator-crumbs-view-css' => '2b575971', + 'phabricator-directory-css' => '2b575971', 'phabricator-drag-and-drop-file-upload' => 'ac53d36a', 'phabricator-dropdown-menu' => 'c90b892e', 'phabricator-file-upload' => 'c90b892e', - 'phabricator-filetree-view-css' => '4dff6da8', - 'phabricator-flag-css' => '4dff6da8', - 'phabricator-form-view-css' => '4dff6da8', - 'phabricator-header-view-css' => '4dff6da8', - 'phabricator-jump-nav' => '4dff6da8', + 'phabricator-filetree-view-css' => '2b575971', + 'phabricator-flag-css' => '2b575971', + 'phabricator-form-view-css' => '2b575971', + 'phabricator-header-view-css' => '2b575971', + 'phabricator-jump-nav' => '2b575971', 'phabricator-keyboard-shortcut' => 'c90b892e', 'phabricator-keyboard-shortcut-manager' => 'c90b892e', - 'phabricator-main-menu-view' => '4dff6da8', + 'phabricator-main-menu-view' => '2b575971', 'phabricator-menu-item' => 'c90b892e', - 'phabricator-nav-view-css' => '4dff6da8', + 'phabricator-nav-view-css' => '2b575971', 'phabricator-notification' => 'c90b892e', - 'phabricator-notification-css' => '4dff6da8', - 'phabricator-notification-menu-css' => '4dff6da8', - 'phabricator-object-item-list-view-css' => '4dff6da8', + 'phabricator-notification-css' => '2b575971', + 'phabricator-notification-menu-css' => '2b575971', + 'phabricator-object-item-list-view-css' => '2b575971', 'phabricator-object-selector-css' => 'ec01d039', 'phabricator-paste-file-upload' => 'c90b892e', 'phabricator-prefab' => 'c90b892e', 'phabricator-project-tag-css' => '83f07678', - 'phabricator-remarkup-css' => '4dff6da8', + 'phabricator-remarkup-css' => '2b575971', 'phabricator-shaped-request' => 'ac53d36a', - 'phabricator-side-menu-view-css' => '4dff6da8', - 'phabricator-standard-page-view' => '4dff6da8', + 'phabricator-side-menu-view-css' => '2b575971', + 'phabricator-standard-page-view' => '2b575971', 'phabricator-textareautils' => 'c90b892e', 'phabricator-tooltip' => 'c90b892e', - 'phabricator-transaction-view-css' => '4dff6da8', - 'phabricator-zindex-css' => '4dff6da8', - 'sprite-apps-large-css' => '4dff6da8', - 'sprite-gradient-css' => '4dff6da8', - 'sprite-icon-css' => '4dff6da8', - 'sprite-menu-css' => '4dff6da8', - 'syntax-highlighting-css' => '4dff6da8', + 'phabricator-transaction-view-css' => '2b575971', + 'phabricator-zindex-css' => '2b575971', + 'sprite-apps-large-css' => '2b575971', + 'sprite-gradient-css' => '2b575971', + 'sprite-icon-css' => '2b575971', + 'sprite-menu-css' => '2b575971', + 'syntax-highlighting-css' => '2b575971', ), )); diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 660b308d02..d62e21041d 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1210,7 +1210,6 @@ phutil_register_library_map(array( 'PhabricatorSettingsPanelProfile' => 'applications/settings/panel/PhabricatorSettingsPanelProfile.php', 'PhabricatorSettingsPanelSSHKeys' => 'applications/settings/panel/PhabricatorSettingsPanelSSHKeys.php', 'PhabricatorSettingsPanelSearchPreferences' => 'applications/settings/panel/PhabricatorSettingsPanelSearchPreferences.php', - 'PhabricatorSetup' => 'infrastructure/PhabricatorSetup.php', 'PhabricatorSetupCheck' => 'applications/config/check/PhabricatorSetupCheck.php', 'PhabricatorSetupCheckAPC' => 'applications/config/check/PhabricatorSetupCheckAPC.php', 'PhabricatorSetupCheckBaseURI' => 'applications/config/check/PhabricatorSetupCheckBaseURI.php', diff --git a/src/applications/config/option/PhabricatorCoreConfigOptions.php b/src/applications/config/option/PhabricatorCoreConfigOptions.php index d1ef5dbc60..941fed5ec9 100644 --- a/src/applications/config/option/PhabricatorCoreConfigOptions.php +++ b/src/applications/config/option/PhabricatorCoreConfigOptions.php @@ -125,9 +125,6 @@ final class PhabricatorCoreConfigOptions $this->newOption('phabricator.env', 'string', null) ->setLocked(true) ->setDescription(pht('Internal.')), - $this->newOption('phabricator.setup', 'bool', false) - ->setLocked(true) - ->setDescription(pht('Internal / deprecated.')), $this->newOption('test.value', 'wild', null) ->setLocked(true) ->setDescription(pht('Unit test value.')), diff --git a/src/docs/configuration/configuration_guide.diviner b/src/docs/configuration/configuration_guide.diviner index 9910e16628..e8a2e5765b 100644 --- a/src/docs/configuration/configuration_guide.diviner +++ b/src/docs/configuration/configuration_guide.diviner @@ -8,85 +8,17 @@ This document contains basic configuration instructions for Phabricator. This document assumes you've already installed all the components you need. If you haven't, see @{article:Installation Guide}. -= Configuring Phabricator = +The next steps are: -Create a new file here: - - path/to/phabricator/conf/custom/myconfig.conf.php - -...where ##myconfig## is some name which identifies your installation. Put this -in the file: - - name=myconfig.conf.php, lang=php - true, - - // This will be the base domain for your install, and must be configured. - // Use "https://" if you have SSL. See below for some notes. - 'phabricator.base-uri' => 'http://phabricator.example.com/', - - // Connection information for MySQL. - 'mysql.host' => 'localhost', - 'mysql.user' => 'root', - 'mysql.pass' => 'trustno1hunter2', - - // Basic email domain configuration. - 'metamta.default-address' => 'noreply@phabricator.example.com', - 'metamta.domain' => 'phabricator.example.com', - - // NOTE: Check default.conf.php for detailed explanations of all the - // configuration options, including these. - - ) + phabricator_read_config_file('production'); - -For the last line, you can also use ##'development'## instead of -##'production'## if you are planning to develop Phabricator itself. This will -turn on some debugging features. - -= PHABRICATOR_ENV Environment Variable = - -When running Phabricator scripts, they will ask you to set the `PHABRICATOR_ENV` -environment variable to point at your config. If you put your script in -`custom/myconfig.conf.php`, you can identify the config with -`custom/myconfig`, like this: - - $ PHABRICATOR_ENV=custom/myconfig ./some_phabricator_command - -NOTE: Make sure you put 'PHABRICATOR_ENV=...' at the beginning of the line, not -in the middle. The shell won't parse environmental variables declared after the -command. You can also ##export PHABRICATOR_ENV=...## in your ~/.bashrc or -~/.profile or similar, depending on which shell you use and how your system is -configured. - -= Storage: Configuring MySQL = - -Get MySQL running and verify you can connect to it. Consult the MySQL -documentation for help. When MySQL works, you need to load the Phabricator -schemata into it. To do this, run: - - phabricator/ $ ./bin/storage upgrade - -If your configuration uses an unprivileged user to connect to the database, you -may have to override the default user so the schema changes can be applied with -root or some other admin user: - - phabricator/ $ ./bin/storage upgrade --user --password - -You can avoid the prompt the script issues by passing the ##--force## flag (for -example, if you are scripting the upgrade process). - - phabricator/ $ ./bin/storage upgrade --force - -NOTE: When you update Phabricator, run `storage upgrade` again to apply any -new updates. + - Configure your webserver (Apache, nginx, or lighttpd). + - Access Phabricator with your browser. + - Follow the instructions to complete setup. = Webserver: Configuring Apache = +NOTE: Follow these instructions to use Apache. To use nginx or lighttpd, scroll +down to their sections. + Get Apache running and verify it's serving a test page. Consult the Apache documentation for help. Make sure ##mod_php## and ##mod_rewrite## are enabled, and ##mod_ssl## if you intend to set up SSL. @@ -104,28 +36,36 @@ this: name=httpd.conf - # Change this to the domain which points to your host, i.e. the domain - # you set as "phabricator.base-uri". + # Change this to the domain which points to your host. ServerName phabricator.example.com # Change this to the path where you put 'phabricator' when you checked it - # out from github when following the Installation Guide. + # out from GitHub when following the Installation Guide. + # + # Make sure you include "/webroot" at the end! DocumentRoot /path/to/phabricator/webroot RewriteEngine on RewriteRule ^/rsrc/(.*) - [L,QSA] RewriteRule ^/favicon.ico - [L,QSA] RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA] - - # This will use the config file you set up in the previous step. If you - # called it something other than 'myconfig', put that here. - SetEnv PHABRICATOR_ENV custom/myconfig -Continue to "Setup" below. +If Apache isn't currently configured to serve documents out of the directory +where you put Phabricator, you may also need to add a section like this: + + + Order allow,deny + Allow from all + + +After making your edits, restart Apache, then continue to "Setup" below. = Webserver: Configuring nginx = +NOTE: Follow these instructions to use nginx. To use Apache or lighttpd, scroll +to their sections. + For nginx, use a configuration like this: name=nginx.conf @@ -149,9 +89,6 @@ For nginx, use a configuration like this: fastcgi_pass localhost:9000; fastcgi_index index.php; - #custom environment variable - fastcgi_param PHABRICATOR_ENV "custom/myconfig"; - #required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; @@ -171,8 +108,13 @@ For nginx, use a configuration like this: } } +Restart nginx after making your edits, then continue to "Setup" below. + = Webserver: Configuring lighttpd = +NOTE: Follow these instructions to use lighttpd. To use Apache or niginx, scroll +up to their sections. + For lighttpd, add a section like this to your lighttpd.conf: $HTTP["host"] =~ "phabricator(\.example\.com)?" { @@ -184,9 +126,6 @@ For lighttpd, add a section like this to your lighttpd.conf: "^(/[^?]*)\?(.*)" => "/index.php?__path__=$1&$2", "^(/.*)$" => "/index.php?__path__=$1", ) - setenv.add-environment = ( - "PHABRICATOR_ENV" => "custom/myconfig", - ) } You should also ensure the following modules are listed in your @@ -194,57 +133,44 @@ server.modules list: mod_fastcgi mod_rewrite - mod_setenv Finally, you should run the following commands to enable php support: $ sudo apt-get install php5-cgi # for ubuntu; other distros should be similar $ sudo lighty-enable-mod fastcgi-php +Restart lighttpd after making your edits, then continue below. + = Setup = -Now, restart your webserver and navigate to whichever subdomain you set up. You -should either see the Phabricator setup screen, which is a simple text page that -looks something like this: +Now, navigate to whichever subdomain you set up. You should see instructions to +continue setup. The rest of this document contains additional instructions for +specific setup steps. - PHABRICATOR SETUP +When you see the login screen, continue with @{article:Configuring Accounts and +Registration}. - This setup mode will guide you through setting up your Phabricator - configuration. += Storage: Configuring MySQL = - >>> REQUIRED PHP EXTENSIONS ------------------------------------------------ - ... +During setup, you'll need to configure MySQL. To do this, get MySQL running and +verify you can connect to it. Consult the MySQL documentation for help. When +MySQL works, you need to load the Phabricator schemata into it. To do this, run: -If you see this, you're in good shape. Follow the instructions and correct any -problems setup detects. If you don't see it but you do see a useful error -message, try to fix that. If neither of these cover you, something is wrong. -If you can't figure it out, come get help in IRC or on the mailing list (see -http://phabricator.org/ for links). + phabricator/ $ ./bin/storage upgrade -= Configuring Phabricator = +If your configuration uses an unprivileged user to connect to the database, you +may have to override the default user so the schema changes can be applied with +root or some other admin user: -Now that basic setup is complete, you should configure Phabricator for your -installation. Phabricator configuration options which control how the -applications behave are documented here: + phabricator/ $ ./bin/storage upgrade --user --password - /path/to/phabricator/conf/default.conf.php +You can avoid the prompt the script issues by passing the ##--force## flag (for +example, if you are scripting the upgrade process). -There are several builtin configurations: + phabricator/ $ ./bin/storage upgrade --force - - ##default.conf.php##: root configuration, lists every configuration option - and sets some default for it. Look in this file to figure out what you can - configure. - - ##development.conf.php##: pulls in ##default.conf.php##, but overrides some - configuration options to better values for doing development on Phabricator. - You probably don't need to even look at this file unless you're making - changes to Phabricator itself. - - ##production.conf.php##: pulls in ##default.conf.php##, but overrides some - configuration options to provide better values for a production install. - -To actually configure your install, edit your ##custom/myconfig.conf.php## file -and override values from either the ##'production'## or ##'development'## -configurations. You should not edit the builtin configurations directly because -that will make upgrading Phabricator more difficult in the future. +NOTE: When you update Phabricator, run `storage upgrade` again to apply any +new updates. = Next Steps = @@ -252,6 +178,8 @@ Continue by: - setting up your admin account and login/registration with @{article:Configuring Accounts and Registration}; or + - understanding advanced configuration topics with + @{article:Configuration User Guide: Advanced Configuration}; or - configuring where uploaded files and attachments will be stored with @{article:Configuring File Storage}; or - configuring Phabricator so it can send mail with diff --git a/src/docs/userguide/advanced_configuration.diviner b/src/docs/userguide/advanced_configuration.diviner new file mode 100644 index 0000000000..1a40c064d8 --- /dev/null +++ b/src/docs/userguide/advanced_configuration.diviner @@ -0,0 +1,114 @@ +@title Configuration User Guide: Advanced Configuration +@group userguide + +Configuring Phabricator for multiple environments. + += Overview = + +Phabricator reads configuration from multiple sources. This document explains +the configuration stack and how to set up advanced configuration sources, which +may be useful for deployments with multiple environments (e.g., development and +production). + +This is a complicated topic for advanced users. You do not need to understand +this topic to install Phabricator. + += Configuration Sources = + +Phabricator supports the following configuration sources, from highest priority +to lowest priority: + + - **Database**: Values are stored in the database and edited from the web UI + by administrators. They have the highest priority and override other + settings. + - **Local**: Values are stored in `conf/local/config.json` and edited by + running `bin/config`. + - **Config Files**: Values are stored in a config file in `conf/`. The file + to use is selected by writing to `conf/local/ENVIRONMENT`, or setting the + PHABRICATOR_ENV configuration variable. See below for more information. + - **Defaults**: Defaults hard-coded in the Phabricator source, which can not + be edited. They have the lowest priority, and all other settings override + them. + +Normally, you install and configure Phabricator by writing enough configuration +into the local config to get access to the database configuration (e.g., the +MySQL username, password, and hostname), then use the web interface to further +configure Phabricator. + += Configuration Files = + +Configuration files provide an alternative to database configuration, and may be +appropriate if you want to deploy in multiple environments or create dynamic +configuration. Configuration files are more complicated than database +configuration, which is why they are not used by default. + +== Creating a Configuration File == + +To create a configuration file, first choose a name for the config (like +"devserver" or "live"). For the purposes of this section, we'll assume you chose +`exampleconfig`. Replace "exampleconfig" with whatever you actually chose in the +examples below. + +First, write an `exampleconfig.conf.php` file here (rename it according to the +name you chose): + + phabricator/conf/custom/exampleconfig.conf.php + +Its contents should look like this: + + 'examplevalue', + ); + +For example, to specify MySQL credentials in your config file, you might create +a config like this: + + 'localhost', + 'mysql.user' => 'root', + 'mysql.pass' => 'hunter2trustno1', + ); + +== Selecting a Configuration File == + +To select a configuration file, write the name of the file (relative to +`phabricator/conf/`) to `phabricator/conf/local/ENVIRONMENT`. For example, to +select `phabricator/conf/custom/exampleconfig.conf.php`, you would write +"custom/exampleconfig" to `phabrictor/conf/local/ENVIRONMENT`: + + phabricator/ $ echo custom/exampleconfig > conf/local/ENVIRONMENT + phabricator/ $ cat conf/local/ENVIRONMENT + custom/exampleconfig + phabricator/ $ + +You can also set the environmental variable `PHABRICATOR_ENV`. This is more +involved but may be easier in some deployment environments. Note that this needs +to be set in your webserver environment, and also in your shell whenever you +run a script: + + # Shell + export PHABRICATOR_ENV=custom/exampleconfig + + # Apache + SetEnv PHABRICATOR_ENV custom/exampleconfig + + # nginx + fastcgi_param PHABRICATOR_ENV "custom/exampleconfig"; + + # lighttpd + setenv.add-environment = ( + "PHABRICATOR_ENV" => "custom/exampleconfig", + ) + +After creating and selecting a configuration file, restart your webserver. Any +configuration you set should take effect immediately, and your file should be +visible in the Config application when examining configuration. + += Next Steps = + +Return to the @{article:Configuration Guide}. diff --git a/src/docs/userguide/notifications.diviner b/src/docs/userguide/notifications.diviner index 55e8dbb791..b12fb421ad 100644 --- a/src/docs/userguide/notifications.diviner +++ b/src/docs/userguide/notifications.diviner @@ -28,12 +28,6 @@ Phabricator implements realtime notifications using a Node.js server called - Install node.js. - Run `bin/aphlict` (this script must be run as root). -Since the script needs `PHABRICATOR_ENV` to be defined, you may need to use -the `-E` flag to `sudo` to preserve the environment if you have -`PHABRICATOR_ENV` defined in your `.bashrc` or similar: - - phabricator/ $ sudo -E ./bin/aphlict - The server must be able to listen on port **843** and port **22280** for Aphlict to work. You can change the latter port in the `notification.client-uri` config, but port 843 is used by Flash and can not be changed. In particular, if you're diff --git a/src/infrastructure/PhabricatorSetup.php b/src/infrastructure/PhabricatorSetup.php deleted file mode 100644 index e6cfbd8375..0000000000 --- a/src/infrastructure/PhabricatorSetup.php +++ /dev/null @@ -1,86 +0,0 @@ ->>\n"); - } - - private static function write($str) { - echo $str; - ob_flush(); - flush(); - - // This, uh, makes it look cool. -_- - usleep(20000); - } - - public static function writeHeader($header) { - $template = '>>>'.str_repeat('-', 77); - $template = substr_replace( - $template, - ' '.$header.' ', - 3, - strlen($header) + 4); - self::write("\n\n{$template}\n\n"); - } - - public static function writeDoc($doc) { - self::write( - "\n". - ' http://www.phabricator.com/docs/phabricator/'.$doc. - "\n\n"); - } - -} diff --git a/src/infrastructure/env/PhabricatorEnv.php b/src/infrastructure/env/PhabricatorEnv.php index 0246216fd1..eb0352c1e0 100644 --- a/src/infrastructure/env/PhabricatorEnv.php +++ b/src/infrastructure/env/PhabricatorEnv.php @@ -58,35 +58,10 @@ final class PhabricatorEnv { * @phutil-external-symbol class PhabricatorStartup */ public static function initializeWebEnvironment() { - $env = self::getSelectedEnvironmentName(); - if (!$env) { - PhabricatorStartup::didFatal( - "The 'PHABRICATOR_ENV' environmental variable is not defined. Modify ". - "your httpd.conf to include 'SetEnv PHABRICATOR_ENV ', where ". - "'' is one of 'development', 'production', or a custom ". - "environment."); - } - self::initializeCommonEnvironment(); } public static function initializeScriptEnvironment() { - $env = self::getSelectedEnvironmentName(); - if (!$env) { - echo phutil_console_wrap( - phutil_console_format( - "**ERROR**: PHABRICATOR_ENV Not Set\n\n". - "Define the __PHABRICATOR_ENV__ environment variable before ". - "running this script. You can do it on the command line like ". - "this:\n\n". - " $ PHABRICATOR_ENV=__custom/myconfig__ %s ...\n\n". - "Replace __custom/myconfig__ with the path to your configuration ". - "file. For more information, see the 'Configuration Guide' in the ". - "Phabricator documentation.\n\n", - $GLOBALS['argv'][0])); - exit(1); - } - self::initializeCommonEnvironment(); // NOTE: This is dangerous in general, but we know we're in a script context @@ -139,14 +114,16 @@ final class PhabricatorEnv { $stack = new PhabricatorConfigStackSource(); self::$sourceStack = $stack; - $defaultSource = id(new PhabricatorConfigDefaultSource()) + $default_source = id(new PhabricatorConfigDefaultSource()) ->setName(pht('Global Default')); - $stack->pushSource($defaultSource); + $stack->pushSource($default_source); $env = self::getSelectedEnvironmentName(); - $stack->pushSource( - id(new PhabricatorConfigFileSource($env)) - ->setName(pht("File '%s'", $env))); + if ($env) { + $stack->pushSource( + id(new PhabricatorConfigFileSource($env)) + ->setName(pht("File '%s'", $env))); + } $stack->pushSource( id(new PhabricatorConfigLocalSource()) @@ -162,7 +139,7 @@ final class PhabricatorEnv { // If custom libraries specify config options, they won't get default // values as the Default source has already been loaded, so we get it to // pull in all options from non-phabricator libraries now they are loaded. - $defaultSource->loadExternalOptions(); + $default_source->loadExternalOptions(); try { $stack->pushSource( diff --git a/webroot/index.php b/webroot/index.php index e751bb36cd..774ad58d7a 100644 --- a/webroot/index.php +++ b/webroot/index.php @@ -28,16 +28,6 @@ try { $sink = new AphrontPHPHTTPSink(); - if (PhabricatorEnv::getEnvConfig('phabricator.setup')) { - try { - PhabricatorSetup::runSetup(); - } catch (Exception $ex) { - echo "EXCEPTION!\n"; - echo $ex; - } - return; - } - $response = PhabricatorSetupCheck::willProcessRequest(); if ($response) { $sink->writeResponse($response);