mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
NEW replace _ss_environment.php with .env and environment vars
This commit is contained in:
parent
a5da085cc7
commit
873fd8c5bc
@ -82,23 +82,20 @@ $_SESSION = null;
|
|||||||
// Connect to database
|
// Connect to database
|
||||||
if(!isset($databaseConfig) || !isset($databaseConfig['database']) || !$databaseConfig['database']) {
|
if(!isset($databaseConfig) || !isset($databaseConfig['database']) || !$databaseConfig['database']) {
|
||||||
echo "\nPlease configure your database connection details. You can do this by creating a file
|
echo "\nPlease configure your database connection details. You can do this by creating a file
|
||||||
called _ss_environment.php in either of the following locations:\n\n";
|
called .env in " . BASE_PATH;
|
||||||
echo " - " . BASE_PATH . DIRECTORY_SEPARATOR . "_ss_environment.php\n - ";
|
|
||||||
echo dirname(BASE_PATH) . DIRECTORY_SEPARATOR . "_ss_environment.php\n\n";
|
|
||||||
echo <<<ENVCONTENT
|
echo <<<ENVCONTENT
|
||||||
|
|
||||||
Put the following content into this file:
|
Put the following content into this file:
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
<?php
|
|
||||||
|
|
||||||
/* Change this from 'dev' to 'live' for a production environment. */
|
# Change this from 'dev' to 'live' for a production environment.
|
||||||
define('SS_ENVIRONMENT_TYPE', 'dev');
|
SS_ENVIRONMENT_TYPE="dev"
|
||||||
|
|
||||||
/* This defines a default database user */
|
/* This defines a default database user */
|
||||||
define('SS_DATABASE_SERVER', 'localhost');
|
SS_DATABASE_SERVER="localhost"
|
||||||
define('SS_DATABASE_USERNAME', '<user>');
|
SS_DATABASE_USERNAME="<user>"
|
||||||
define('SS_DATABASE_PASSWORD', '<password>');
|
SS_DATABASE_PASSWORD="<password>"
|
||||||
define('SS_DATABASE_NAME', '<database>');
|
SS_DATABASE_NAME="<database>"
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
|
|
||||||
Once you have done that, run 'composer install' or './framework/sake dev/build' to create
|
Once you have done that, run 'composer install' or './framework/sake dev/build' to create
|
||||||
|
@ -24,7 +24,8 @@
|
|||||||
"embed/embed": "^2.6",
|
"embed/embed": "^2.6",
|
||||||
"swiftmailer/swiftmailer": "~5.4",
|
"swiftmailer/swiftmailer": "~5.4",
|
||||||
"symfony/config": "^2.8|^3",
|
"symfony/config": "^2.8|^3",
|
||||||
"symfony/translation": "^2.8|^3"
|
"symfony/translation": "^2.8|^3",
|
||||||
|
"vlucas/phpdotenv": "^2.4"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/PHPUnit": "~4.8",
|
"phpunit/PHPUnit": "~4.8",
|
||||||
|
3
main.php
3
main.php
@ -32,8 +32,7 @@ if (version_compare(phpversion(), '5.5.0', '<')) {
|
|||||||
*
|
*
|
||||||
* The main.php does a number of set-up activities for the request.
|
* The main.php does a number of set-up activities for the request.
|
||||||
*
|
*
|
||||||
* - Includes the first one of the following files that it finds: (root)/_ss_environment.php,
|
* - Includes the .env file in your webroot
|
||||||
* (root)/../_ss_environment.php, or (root)/../../_ss_environment.php
|
|
||||||
* - Gets an up-to-date manifest from {@link ManifestBuilder}
|
* - Gets an up-to-date manifest from {@link ManifestBuilder}
|
||||||
* - Sets up error handlers with {@link Debug::loadErrorHandlers()}
|
* - Sets up error handlers with {@link Debug::loadErrorHandlers()}
|
||||||
* - Calls {@link DB::connect()}, passing it the global variable $databaseConfig that should
|
* - Calls {@link DB::connect()}, passing it the global variable $databaseConfig that should
|
||||||
|
@ -35,13 +35,8 @@ class ProtectedAssetAdapter extends AssetAdapter implements ProtectedAdapter
|
|||||||
return parent::findRoot($root);
|
return parent::findRoot($root);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use environment defined path
|
// Use environment defined path or default location is under assets
|
||||||
if (defined('SS_PROTECTED_ASSETS_PATH')) {
|
return getenv('SS_PROTECTED_ASSETS_PATH') ?: ASSETS_PATH . '/' . Config::inst()->get(get_class($this), 'secure_folder');
|
||||||
return SS_PROTECTED_ASSETS_PATH;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Default location is under assets
|
|
||||||
return ASSETS_PATH . '/' . Config::inst()->get(get_class($this), 'secure_folder');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -607,7 +607,7 @@ class Director implements TemplateGlobalProvider
|
|||||||
// See https://support.microsoft.com/en-us/kb/307347
|
// See https://support.microsoft.com/en-us/kb/307347
|
||||||
$headerOverride = false;
|
$headerOverride = false;
|
||||||
if (TRUSTED_PROXY) {
|
if (TRUSTED_PROXY) {
|
||||||
$headers = (defined('SS_TRUSTED_PROXY_PROTOCOL_HEADER')) ? array(SS_TRUSTED_PROXY_PROTOCOL_HEADER) : null;
|
$headers = (getenv('SS_TRUSTED_PROXY_PROTOCOL_HEADER')) ? array(getenv('SS_TRUSTED_PROXY_PROTOCOL_HEADER')) : null;
|
||||||
if (!$headers) {
|
if (!$headers) {
|
||||||
// Backwards compatible defaults
|
// Backwards compatible defaults
|
||||||
$headers = array('HTTP_X_FORWARDED_PROTO', 'HTTP_X_FORWARDED_PROTOCOL', 'HTTP_FRONT_END_HTTPS');
|
$headers = array('HTTP_X_FORWARDED_PROTO', 'HTTP_X_FORWARDED_PROTOCOL', 'HTTP_FRONT_END_HTTPS');
|
||||||
|
@ -768,7 +768,7 @@ class HTTPRequest implements ArrayAccess
|
|||||||
{
|
{
|
||||||
$headerOverrideIP = null;
|
$headerOverrideIP = null;
|
||||||
if (TRUSTED_PROXY) {
|
if (TRUSTED_PROXY) {
|
||||||
$headers = (defined('SS_TRUSTED_PROXY_IP_HEADER')) ? array(SS_TRUSTED_PROXY_IP_HEADER) : null;
|
$headers = (getenv('SS_TRUSTED_PROXY_IP_HEADER')) ? array(getenv('SS_TRUSTED_PROXY_IP_HEADER')) : null;
|
||||||
if (!$headers) {
|
if (!$headers) {
|
||||||
// Backwards compatible defaults
|
// Backwards compatible defaults
|
||||||
$headers = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR');
|
$headers = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR');
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
* This file is the Framework constants bootstrap. It will prepare some basic common constants.
|
* This file is the Framework constants bootstrap. It will prepare some basic common constants.
|
||||||
*
|
*
|
||||||
* It takes care of:
|
* It takes care of:
|
||||||
* - Including _ss_environment.php
|
|
||||||
* - Normalisation of $_SERVER values
|
* - Normalisation of $_SERVER values
|
||||||
* - Initialisation of necessary constants (mostly paths)
|
* - Initialisation of necessary constants (mostly paths)
|
||||||
*
|
*
|
||||||
@ -30,48 +29,6 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// ENVIRONMENT CONFIG
|
// ENVIRONMENT CONFIG
|
||||||
|
|
||||||
/**
|
|
||||||
* Include _ss_environment.php file
|
|
||||||
*/
|
|
||||||
//define the name of the environment file
|
|
||||||
$envFile = '_ss_environment.php';
|
|
||||||
//define the dirs to start scanning from (have to add the trailing slash)
|
|
||||||
// we're going to check the realpath AND the path as the script sees it
|
|
||||||
$dirsToCheck = array(
|
|
||||||
realpath('.'),
|
|
||||||
dirname($_SERVER['SCRIPT_FILENAME'])
|
|
||||||
);
|
|
||||||
//if they are the same, remove one of them
|
|
||||||
if ($dirsToCheck[0] == $dirsToCheck[1]) {
|
|
||||||
unset($dirsToCheck[1]);
|
|
||||||
}
|
|
||||||
foreach ($dirsToCheck as $dir) {
|
|
||||||
//check this dir and every parent dir (until we hit the base of the drive)
|
|
||||||
// or until we hit a dir we can't read
|
|
||||||
while (true) {
|
|
||||||
//if it's readable, go ahead
|
|
||||||
if (@is_readable($dir)) {
|
|
||||||
//if the file exists, then we include it, set relevant vars and break out
|
|
||||||
if (file_exists($dir . DIRECTORY_SEPARATOR . $envFile)) {
|
|
||||||
define('SS_ENVIRONMENT_FILE', $dir . DIRECTORY_SEPARATOR . $envFile);
|
|
||||||
include_once(SS_ENVIRONMENT_FILE);
|
|
||||||
//break out of BOTH loops because we found the $envFile
|
|
||||||
break(2);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//break out of the while loop, we can't read the dir
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (dirname($dir) == $dir) {
|
|
||||||
// here we need to check that the path of the last dir and the next one are
|
|
||||||
// not the same, if they are, we have hit the root of the drive
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//go up a directory
|
|
||||||
$dir = dirname($dir);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate whether the request comes directly from a trusted server or not
|
* Validate whether the request comes directly from a trusted server or not
|
||||||
* This is necessary to validate whether or not the values of X-Forwarded-
|
* This is necessary to validate whether or not the values of X-Forwarded-
|
||||||
@ -82,18 +39,18 @@ if (!defined('TRUSTED_PROXY')) {
|
|||||||
|
|
||||||
if (getenv('BlockUntrustedProxyHeaders') // Legacy setting (reverted from documentation)
|
if (getenv('BlockUntrustedProxyHeaders') // Legacy setting (reverted from documentation)
|
||||||
|| getenv('BlockUntrustedIPs') // Documented setting
|
|| getenv('BlockUntrustedIPs') // Documented setting
|
||||||
|| defined('SS_TRUSTED_PROXY_IPS')
|
|| getenv('SS_TRUSTED_PROXY_IPS')
|
||||||
) {
|
) {
|
||||||
$trusted = false;
|
$trusted = false;
|
||||||
|
|
||||||
if (defined('SS_TRUSTED_PROXY_IPS') && SS_TRUSTED_PROXY_IPS !== 'none') {
|
if (getenv('SS_TRUSTED_PROXY_IPS') !== 'none') {
|
||||||
if (SS_TRUSTED_PROXY_IPS === '*') {
|
if (getenv('SS_TRUSTED_PROXY_IPS') === '*') {
|
||||||
$trusted = true;
|
$trusted = true;
|
||||||
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
|
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
|
||||||
if (!class_exists('SilverStripe\\Control\\Util\\IPUtils')) {
|
if (!class_exists('SilverStripe\\Control\\Util\\IPUtils')) {
|
||||||
require_once 'Control/IPUtils.php';
|
require_once 'Control/IPUtils.php';
|
||||||
};
|
};
|
||||||
$trusted = SilverStripe\Control\Util\IPUtils::checkIP($_SERVER['REMOTE_ADDR'], explode(',', SS_TRUSTED_PROXY_IPS));
|
$trusted = SilverStripe\Control\Util\IPUtils::checkIP($_SERVER['REMOTE_ADDR'], explode(',', getenv('SS_TRUSTED_PROXY_IPS')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -202,6 +159,23 @@ if (!defined('BASE_PATH')) {
|
|||||||
}
|
}
|
||||||
define('BASE_PATH', $candidateBasePath);
|
define('BASE_PATH', $candidateBasePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Allow a first class env var to be set that disables .env file loading
|
||||||
|
if (!getenv('SS_IGNORE_DOT_ENV')) {
|
||||||
|
foreach (array(
|
||||||
|
BASE_PATH,
|
||||||
|
dirname(BASE_PATH),
|
||||||
|
) as $path) {
|
||||||
|
try {
|
||||||
|
(new \Dotenv\Dotenv($path))->load();
|
||||||
|
} catch (\Dotenv\Exception\InvalidPathException $e) {
|
||||||
|
// no .env found - no big deal
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!defined('BASE_URL')) {
|
if (!defined('BASE_URL')) {
|
||||||
// Determine the base URL by comparing SCRIPT_NAME to SCRIPT_FILENAME and getting common elements
|
// Determine the base URL by comparing SCRIPT_NAME to SCRIPT_FILENAME and getting common elements
|
||||||
$path = realpath($_SERVER['SCRIPT_FILENAME']);
|
$path = realpath($_SERVER['SCRIPT_FILENAME']);
|
||||||
|
@ -176,7 +176,7 @@ class ClassManifest
|
|||||||
$this->base = $base;
|
$this->base = $base;
|
||||||
$this->tests = $includeTests;
|
$this->tests = $includeTests;
|
||||||
|
|
||||||
$cacheClass = defined('SS_MANIFESTCACHE') ? SS_MANIFESTCACHE : 'SilverStripe\\Core\\Manifest\\ManifestCache_File';
|
$cacheClass = getenv('SS_MANIFESTCACHE') ?: 'SilverStripe\\Core\\Manifest\\ManifestCache_File';
|
||||||
|
|
||||||
$this->cache = new $cacheClass('classmanifest'.($includeTests ? '_tests' : ''));
|
$this->cache = new $cacheClass('classmanifest'.($includeTests ? '_tests' : ''));
|
||||||
$this->cacheKey = 'manifest';
|
$this->cacheKey = 'manifest';
|
||||||
|
@ -210,7 +210,7 @@ class ConfigManifest
|
|||||||
|
|
||||||
if (isset($key['envvars'])) {
|
if (isset($key['envvars'])) {
|
||||||
foreach ($key['envvars'] as $variable => $foo) {
|
foreach ($key['envvars'] as $variable => $foo) {
|
||||||
$key['envvars'][$variable] = isset($_ENV[$variable]) ? $_ENV[$variable] : null;
|
$key['envvars'][$variable] = getenv($variable) ?: null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -726,7 +726,7 @@ class ConfigManifest
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'envvarset':
|
case 'envvarset':
|
||||||
$matches = $matches && isset($_ENV[$v]);
|
$matches = $matches && getenv($v);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'constantdefined':
|
case 'constantdefined':
|
||||||
@ -735,7 +735,7 @@ class ConfigManifest
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
$matches = $matches && (
|
$matches = $matches && (
|
||||||
(isset($_ENV[$k]) && $_ENV[$k] == $v) ||
|
getenv($k) == $v ||
|
||||||
(defined($k) && constant($k) == $v)
|
(defined($k) && constant($k) == $v)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
@ -179,7 +179,7 @@ class ParameterConfirmationToken
|
|||||||
// See https://support.microsoft.com/en-us/kb/307347
|
// See https://support.microsoft.com/en-us/kb/307347
|
||||||
$headerOverride = false;
|
$headerOverride = false;
|
||||||
if (TRUSTED_PROXY) {
|
if (TRUSTED_PROXY) {
|
||||||
$headers = (defined('SS_TRUSTED_PROXY_PROTOCOL_HEADER')) ? array(SS_TRUSTED_PROXY_PROTOCOL_HEADER) : null;
|
$headers = (getenv('SS_TRUSTED_PROXY_PROTOCOL_HEADER')) ? array(getenv('SS_TRUSTED_PROXY_PROTOCOL_HEADER')) : null;
|
||||||
if (!$headers) {
|
if (!$headers) {
|
||||||
// Backwards compatible defaults
|
// Backwards compatible defaults
|
||||||
$headers = array('HTTP_X_FORWARDED_PROTO', 'HTTP_X_FORWARDED_PROTOCOL', 'HTTP_FRONT_END_HTTPS');
|
$headers = array('HTTP_X_FORWARDED_PROTO', 'HTTP_X_FORWARDED_PROTOCOL', 'HTTP_FRONT_END_HTTPS');
|
||||||
|
@ -152,10 +152,7 @@ class Deprecation
|
|||||||
if (isset(self::$enabled)) {
|
if (isset(self::$enabled)) {
|
||||||
return self::$enabled;
|
return self::$enabled;
|
||||||
}
|
}
|
||||||
if (defined('SS_DEPRECATION_ENABLED')) {
|
return getenv('SS_DEPRECATION_ENABLED') ?: true;
|
||||||
return SS_DEPRECATION_ENABLED;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
2
src/Dev/Install/client/dist/js/install.js
vendored
2
src/Dev/Install/client/dist/js/install.js
vendored
@ -2,7 +2,7 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Toggle field readonly modes, if check configuration comes from
|
* Toggle field readonly modes, if check configuration comes from
|
||||||
* _ss_environment (values populated on reload).
|
* environment variables (values populated on reload).
|
||||||
*/
|
*/
|
||||||
$('#use_environment').click(function (e) {
|
$('#use_environment').click(function (e) {
|
||||||
if (!$(this).is(':checked')) {
|
if (!$(this).is(':checked')) {
|
||||||
|
@ -101,7 +101,7 @@
|
|||||||
// All are disabled by default when environment is used
|
// All are disabled by default when environment is used
|
||||||
$disabled = 'disabled="disabled"';
|
$disabled = 'disabled="disabled"';
|
||||||
// If SS_DATABASE_CLASS is specified, check the database in the list
|
// If SS_DATABASE_CLASS is specified, check the database in the list
|
||||||
if(defined('SS_DATABASE_CLASS') && SS_DATABASE_CLASS == $class) {
|
if(getenv('SS_DATABASE_CLASS') == $class) {
|
||||||
$checked = ' checked="checked"';
|
$checked = ' checked="checked"';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -135,8 +135,8 @@
|
|||||||
$fieldType = ($fieldName == 'password') ? 'password' : 'text';
|
$fieldType = ($fieldName == 'password') ? 'password' : 'text';
|
||||||
// values
|
// values
|
||||||
$defaultValue = (isset($fieldSpec['default'])) ? $fieldSpec['default'] : null;
|
$defaultValue = (isset($fieldSpec['default'])) ? $fieldSpec['default'] : null;
|
||||||
if($usingEnv && isset($fieldSpec['envVar']) && defined($fieldSpec['envVar'])) {
|
if($usingEnv && isset($fieldSpec['envVar']) && $envVar = getenv($fieldSpec['envVar'])) {
|
||||||
$value = constant($fieldSpec['envVar']);
|
$value = $envVar;
|
||||||
} else {
|
} else {
|
||||||
$value = (isset($databaseConfig[$fieldName]) && $databaseConfig['type'] == $class) ? $databaseConfig[$fieldName] : $defaultValue;
|
$value = (isset($databaseConfig[$fieldName]) && $databaseConfig['type'] == $class) ? $databaseConfig[$fieldName] : $defaultValue;
|
||||||
}
|
}
|
||||||
@ -149,7 +149,7 @@
|
|||||||
'name' => "db[$class][$fieldName]",
|
'name' => "db[$class][$fieldName]",
|
||||||
'value' => $value,
|
'value' => $value,
|
||||||
);
|
);
|
||||||
if($usingEnv && isset($fieldSpec['envVar']) && defined($fieldSpec['envVar'])) {
|
if($usingEnv && isset($fieldSpec['envVar']) && getenv($fieldSpec['envVar'])) {
|
||||||
$attrs['disabled'] = 'disabled';
|
$attrs['disabled'] = 'disabled';
|
||||||
}
|
}
|
||||||
if(isset($fieldSpec['envVar'])) {
|
if(isset($fieldSpec['envVar'])) {
|
||||||
@ -177,7 +177,7 @@
|
|||||||
<?php if($envFileExists) { ?>
|
<?php if($envFileExists) { ?>
|
||||||
<div id="use_environment_field" class="field">
|
<div id="use_environment_field" class="field">
|
||||||
<input id="use_environment" type="checkbox" name="useEnv" <?php if($usingEnv) echo "checked=\"checked\"" ?>>
|
<input id="use_environment" type="checkbox" name="useEnv" <?php if($usingEnv) echo "checked=\"checked\"" ?>>
|
||||||
<label for="use_environment">Use _ss_environment file for configuration (<a href="http://doc.silverstripe.org/framework/en/topics/environment-management" target="_blank">?</a>)</label>
|
<label for="use_environment">Use environment variables for configuration (<a href="http://doc.silverstripe.org/framework/en/topics/environment-management" target="_blank">?</a>)</label>
|
||||||
</div>
|
</div>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
@ -202,14 +202,14 @@
|
|||||||
<div class="field">
|
<div class="field">
|
||||||
<label for="admin_username">Email:</label>
|
<label for="admin_username">Email:</label>
|
||||||
<span class="middleColumn">
|
<span class="middleColumn">
|
||||||
<input type="text" class="text configured-by-env" name="admin[username]" id="admin_username" value="<?php echo htmlspecialchars($adminConfig['username'], ENT_QUOTES, 'UTF-8'); ?>" <?php if($usingEnv && defined('SS_DEFAULT_ADMIN_USERNAME')) echo 'disabled="disabled"' ?>>
|
<input type="text" class="text configured-by-env" name="admin[username]" id="admin_username" value="<?php echo htmlspecialchars($adminConfig['username'], ENT_QUOTES, 'UTF-8'); ?>" <?php if($usingEnv && getenv('SS_DEFAULT_ADMIN_USERNAME')) echo 'disabled="disabled"' ?>>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label for="admin_password">Password:</label>
|
<label for="admin_password">Password:</label>
|
||||||
<span class="middleColumn">
|
<span class="middleColumn">
|
||||||
<input type="password" class="text configured-by-env" name="admin[password]" id="admin_password" value="<?php echo htmlspecialchars($adminConfig['password'], ENT_QUOTES, 'UTF-8'); ?>" <?php if($usingEnv && defined('SS_DEFAULT_ADMIN_PASSWORD')) echo 'disabled="disabled"' ?>>
|
<input type="password" class="text configured-by-env" name="admin[password]" id="admin_password" value="<?php echo htmlspecialchars($adminConfig['password'], ENT_QUOTES, 'UTF-8'); ?>" <?php if($usingEnv && getenv('SS_DEFAULT_ADMIN_PASSWORD')) echo 'disabled="disabled"' ?>>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -60,8 +60,7 @@ if (!$included) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$envFileExists = defined('SS_ENVIRONMENT_FILE');
|
$usingEnv = !empty($_REQUEST['useEnv']);
|
||||||
$usingEnv = $envFileExists && !empty($_REQUEST['useEnv']);
|
|
||||||
|
|
||||||
require_once __DIR__ . '/DatabaseConfigurationHelper.php';
|
require_once __DIR__ . '/DatabaseConfigurationHelper.php';
|
||||||
require_once __DIR__ . '/DatabaseAdapterRegistry.php';
|
require_once __DIR__ . '/DatabaseAdapterRegistry.php';
|
||||||
@ -142,8 +141,8 @@ if(isset($_REQUEST['db'])) {
|
|||||||
if(isset($_REQUEST['db']['type'])) {
|
if(isset($_REQUEST['db']['type'])) {
|
||||||
$type = $_REQUEST['db']['type'];
|
$type = $_REQUEST['db']['type'];
|
||||||
} else {
|
} else {
|
||||||
if( defined('SS_DATABASE_CLASS') ){
|
if ($type = getenv('SS_DATABASE_CLASS')) {
|
||||||
$type = $_REQUEST['db']['type'] = SS_DATABASE_CLASS;
|
$_REQUEST['db']['type'] = $type;
|
||||||
} elseif( $databaseClasses['MySQLPDODatabase']['supported'] ) {
|
} elseif( $databaseClasses['MySQLPDODatabase']['supported'] ) {
|
||||||
$type = $_REQUEST['db']['type'] = 'MySQLPDODatabase';
|
$type = $_REQUEST['db']['type'] = 'MySQLPDODatabase';
|
||||||
} elseif( $databaseClasses['MySQLDatabase']['supported'] ) {
|
} elseif( $databaseClasses['MySQLDatabase']['supported'] ) {
|
||||||
@ -156,10 +155,10 @@ if(isset($_REQUEST['db'])) {
|
|||||||
// Disabled inputs don't submit anything - we need to use the environment (except the database name)
|
// Disabled inputs don't submit anything - we need to use the environment (except the database name)
|
||||||
if($usingEnv) {
|
if($usingEnv) {
|
||||||
$_REQUEST['db'][$type] = $databaseConfig = array(
|
$_REQUEST['db'][$type] = $databaseConfig = array(
|
||||||
"type" => defined('SS_DATABASE_CLASS') ? SS_DATABASE_CLASS : $type,
|
"type" => getenv('SS_DATABASE_CLASS') ?: $type,
|
||||||
"server" => defined('SS_DATABASE_SERVER') ? SS_DATABASE_SERVER : "localhost",
|
"server" => getenv('SS_DATABASE_SERVER') ?: "localhost",
|
||||||
"username" => defined('SS_DATABASE_USERNAME') ? SS_DATABASE_USERNAME : "root",
|
"username" => getenv('SS_DATABASE_USERNAME') ?: "root",
|
||||||
"password" => defined('SS_DATABASE_PASSWORD') ? SS_DATABASE_PASSWORD : "",
|
"password" => getenv('SS_DATABASE_PASSWORD') ?: "",
|
||||||
"database" => $_REQUEST['db'][$type]['database'],
|
"database" => $_REQUEST['db'][$type]['database'],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -169,8 +168,8 @@ if(isset($_REQUEST['db'])) {
|
|||||||
$databaseConfig['type'] = $type;
|
$databaseConfig['type'] = $type;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if( defined('SS_DATABASE_CLASS') ){
|
if($type = getenv('SS_DATABASE_CLASS')) {
|
||||||
$type = $_REQUEST['db']['type'] = SS_DATABASE_CLASS;
|
$_REQUEST['db']['type'] = $type;
|
||||||
} elseif( $databaseClasses['MySQLPDODatabase']['supported'] ) {
|
} elseif( $databaseClasses['MySQLPDODatabase']['supported'] ) {
|
||||||
$type = $_REQUEST['db']['type'] = 'MySQLPDODatabase';
|
$type = $_REQUEST['db']['type'] = 'MySQLPDODatabase';
|
||||||
} elseif( $databaseClasses['MySQLDatabase']['supported'] ) {
|
} elseif( $databaseClasses['MySQLDatabase']['supported'] ) {
|
||||||
@ -180,9 +179,9 @@ if(isset($_REQUEST['db'])) {
|
|||||||
}
|
}
|
||||||
$_REQUEST['db'][$type] = $databaseConfig = array(
|
$_REQUEST['db'][$type] = $databaseConfig = array(
|
||||||
"type" => $type,
|
"type" => $type,
|
||||||
"server" => defined('SS_DATABASE_SERVER') ? SS_DATABASE_SERVER : "localhost",
|
"server" => getenv('SS_DATABASE_SERVER') ?: "localhost",
|
||||||
"username" => defined('SS_DATABASE_USERNAME') ? SS_DATABASE_USERNAME : "root",
|
"username" => getenv('SS_DATABASE_USERNAME') ?: "root",
|
||||||
"password" => defined('SS_DATABASE_PASSWORD') ? SS_DATABASE_PASSWORD : "",
|
"password" => getenv('SS_DATABASE_PASSWORD') ?: "",
|
||||||
"database" => isset($_SERVER['argv'][2]) ? $_SERVER['argv'][2] : "SS_mysite",
|
"database" => isset($_SERVER['argv'][2]) ? $_SERVER['argv'][2] : "SS_mysite",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -191,16 +190,16 @@ if(isset($_REQUEST['admin'])) {
|
|||||||
// Disabled inputs don't submit anything - we need to use the environment (except the database name)
|
// Disabled inputs don't submit anything - we need to use the environment (except the database name)
|
||||||
if($usingEnv) {
|
if($usingEnv) {
|
||||||
$_REQUEST['admin'] = $adminConfig = array(
|
$_REQUEST['admin'] = $adminConfig = array(
|
||||||
'username' => defined('SS_DEFAULT_ADMIN_USERNAME') ? SS_DEFAULT_ADMIN_USERNAME : 'admin',
|
'username' => getenv('SS_DEFAULT_ADMIN_USERNAME') ?: 'admin',
|
||||||
'password' => defined('SS_DEFAULT_ADMIN_PASSWORD') ? SS_DEFAULT_ADMIN_PASSWORD : '',
|
'password' => getenv('SS_DEFAULT_ADMIN_PASSWORD') ?: '',
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$adminConfig = $_REQUEST['admin'];
|
$adminConfig = $_REQUEST['admin'];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$_REQUEST['admin'] = $adminConfig = array(
|
$_REQUEST['admin'] = $adminConfig = array(
|
||||||
'username' => defined('SS_DEFAULT_ADMIN_USERNAME') ? SS_DEFAULT_ADMIN_USERNAME : 'admin',
|
'username' => getenv('SS_DEFAULT_ADMIN_USERNAME') ?: 'admin',
|
||||||
'password' => defined('SS_DEFAULT_ADMIN_PASSWORD') ? SS_DEFAULT_ADMIN_PASSWORD : '',
|
'password' => getenv('SS_DEFAULT_ADMIN_PASSWORD') ?: '',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1402,7 +1401,7 @@ class Installer extends InstallRequirements {
|
|||||||
// Write the config file
|
// Write the config file
|
||||||
global $usingEnv;
|
global $usingEnv;
|
||||||
if($usingEnv) {
|
if($usingEnv) {
|
||||||
$this->statusMessage("Setting up 'mysite/_config.php' for use with _ss_environment.php...");
|
$this->statusMessage("Setting up 'mysite/_config.php' for use with environment variables...");
|
||||||
$this->writeToFile("mysite/_config.php", <<<PHP
|
$this->writeToFile("mysite/_config.php", <<<PHP
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
@ -1026,7 +1026,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase
|
|||||||
public static function using_temp_db()
|
public static function using_temp_db()
|
||||||
{
|
{
|
||||||
$dbConn = DB::get_conn();
|
$dbConn = DB::get_conn();
|
||||||
$prefix = defined('SS_DATABASE_PREFIX') ? SS_DATABASE_PREFIX : 'ss_';
|
$prefix = getenv('SS_DATABASE_PREFIX') ?: 'ss_';
|
||||||
return $dbConn && (substr($dbConn->getSelectedDatabase(), 0, strlen($prefix) + 5)
|
return $dbConn && (substr($dbConn->getSelectedDatabase(), 0, strlen($prefix) + 5)
|
||||||
== strtolower(sprintf('%stmpdb', $prefix)));
|
== strtolower(sprintf('%stmpdb', $prefix)));
|
||||||
}
|
}
|
||||||
@ -1083,7 +1083,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase
|
|||||||
$databaseConfig['timezone'] = '+0:00';
|
$databaseConfig['timezone'] = '+0:00';
|
||||||
DB::connect($databaseConfig);
|
DB::connect($databaseConfig);
|
||||||
$dbConn = DB::get_conn();
|
$dbConn = DB::get_conn();
|
||||||
$prefix = defined('SS_DATABASE_PREFIX') ? SS_DATABASE_PREFIX : 'ss_';
|
$prefix = getenv('SS_DATABASE_PREFIX') ?: 'ss_';
|
||||||
$dbname = strtolower(sprintf('%stmpdb', $prefix)) . rand(1000000, 9999999);
|
$dbname = strtolower(sprintf('%stmpdb', $prefix)) . rand(1000000, 9999999);
|
||||||
while (!$dbname || $dbConn->databaseExists($dbname)) {
|
while (!$dbname || $dbConn->databaseExists($dbname)) {
|
||||||
$dbname = strtolower(sprintf('%stmpdb', $prefix)) . rand(1000000, 9999999);
|
$dbname = strtolower(sprintf('%stmpdb', $prefix)) . rand(1000000, 9999999);
|
||||||
@ -1103,7 +1103,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public static function delete_all_temp_dbs()
|
public static function delete_all_temp_dbs()
|
||||||
{
|
{
|
||||||
$prefix = defined('SS_DATABASE_PREFIX') ? SS_DATABASE_PREFIX : 'ss_';
|
$prefix = getenv('SS_DATABASE_PREFIX') ?: 'ss_';
|
||||||
foreach (DB::get_schema()->databaseList() as $dbName) {
|
foreach (DB::get_schema()->databaseList() as $dbName) {
|
||||||
if (preg_match(sprintf('/^%stmpdb[0-9]+$/', $prefix), $dbName)) {
|
if (preg_match(sprintf('/^%stmpdb[0-9]+$/', $prefix), $dbName)) {
|
||||||
DB::get_schema()->dropDatabase($dbName);
|
DB::get_schema()->dropDatabase($dbName);
|
||||||
|
@ -241,7 +241,7 @@ class DB
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$prefix = defined('SS_DATABASE_PREFIX') ? SS_DATABASE_PREFIX : 'ss_';
|
$prefix = getenv('SS_DATABASE_PREFIX') ?: 'ss_';
|
||||||
$pattern = strtolower(sprintf('/^%stmpdb\d{7}$/', $prefix));
|
$pattern = strtolower(sprintf('/^%stmpdb\d{7}$/', $prefix));
|
||||||
return (bool)preg_match($pattern, $name);
|
return (bool)preg_match($pattern, $name);
|
||||||
}
|
}
|
||||||
|
@ -134,9 +134,9 @@ class BasicAuth
|
|||||||
* away from prying eyes, but still be able to test the regular log-in features of the site.
|
* away from prying eyes, but still be able to test the regular log-in features of the site.
|
||||||
*
|
*
|
||||||
* If you are including conf/ConfigureFromEnv.php in your _config.php file, you can also enable
|
* If you are including conf/ConfigureFromEnv.php in your _config.php file, you can also enable
|
||||||
* this feature by adding this line to your _ss_environment.php:
|
* this feature by adding this line to your .env:
|
||||||
*
|
*
|
||||||
* define('SS_USE_BASIC_AUTH', true);
|
* SS_USE_BASIC_AUTH=1
|
||||||
*
|
*
|
||||||
* @param boolean $protect Set this to false to disable protection.
|
* @param boolean $protect Set this to false to disable protection.
|
||||||
* @param string $code {@link Permission} code that is required from the user.
|
* @param string $code {@link Permission} code that is required from the user.
|
||||||
|
@ -72,9 +72,8 @@ class ThemeManifest implements ThemeList
|
|||||||
|
|
||||||
$this->project = $project;
|
$this->project = $project;
|
||||||
|
|
||||||
$cacheClass = defined('SS_MANIFESTCACHE')
|
$cacheClass = getenv('SS_MANIFESTCACHE')
|
||||||
? SS_MANIFESTCACHE
|
?: 'SilverStripe\\Core\\Manifest\\ManifestCache_File';
|
||||||
: 'SilverStripe\\Core\\Manifest\\ManifestCache_File';
|
|
||||||
|
|
||||||
$this->cache = new $cacheClass('thememanifest'.($includeTests ? '_tests' : ''));
|
$this->cache = new $cacheClass('thememanifest'.($includeTests ? '_tests' : ''));
|
||||||
$this->cacheKey = $this->getCacheKey();
|
$this->cacheKey = $this->getCacheKey();
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Configure SilverStripe from the _ss_environment.php file.
|
* Configure SilverStripe from the environment variables.
|
||||||
* Usage: Put "require_once('conf/ConfigureFromEnv.php');" into your _config.php file.
|
* Usage: Put "require_once('conf/ConfigureFromEnv.php');" into your _config.php file.
|
||||||
*
|
*
|
||||||
* If you include this file, you will be able to use the following defines in _ss_environment.php to control
|
* If you include this file, you will be able to use the following variables to control
|
||||||
* your site.
|
* your site.
|
||||||
*
|
*
|
||||||
* Your database connection will be set up using these defines:
|
* Your database connection will be set up using these defines:
|
||||||
@ -55,49 +55,27 @@ use SilverStripe\Dev\Install\DatabaseAdapterRegistry;
|
|||||||
use SilverStripe\Security\BasicAuth;
|
use SilverStripe\Security\BasicAuth;
|
||||||
use SilverStripe\Security\Security;
|
use SilverStripe\Security\Security;
|
||||||
|
|
||||||
/*
|
if ($envType = getenv('SS_ENVIRONMENT_TYPE')) {
|
||||||
* _ss_environment.php handler
|
Director::config()->environment_type = $envType;
|
||||||
*/
|
|
||||||
if (defined('SS_ENVIRONMENT_FILE')) {
|
|
||||||
// Only perform validation if SS_ENVIRONMENT_FILE is actually set, which is to say, there is an
|
|
||||||
// _ss_environment.php file
|
|
||||||
foreach (array(
|
|
||||||
'SS_DATABASE_PASSWORD',
|
|
||||||
'SS_DATABASE_USERNAME',
|
|
||||||
'SS_ENVIRONMENT_TYPE',) as $reqDefine) {
|
|
||||||
if (!defined($reqDefine)) {
|
|
||||||
user_error(
|
|
||||||
"$reqDefine must be defined in your _ss_environment.php."
|
|
||||||
. "See http://doc.silverstripe.org/framework/en/topics/environment-management for more information",
|
|
||||||
E_USER_ERROR
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defined('SS_ENVIRONMENT_TYPE')) {
|
|
||||||
Director::config()->environment_type = SS_ENVIRONMENT_TYPE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
global $database;
|
global $database;
|
||||||
|
|
||||||
// No database provided
|
// No database provided
|
||||||
if (!isset($database) || !$database) {
|
if (!isset($database) || !$database) {
|
||||||
if (defined('SS_DATABASE_NAME')) {
|
if (!($database = getenv('SS_DATABASE_NAME')) && $chooseName = getenv('SS_DATABASE_CHOOSE_NAME')) {
|
||||||
$database = SS_DATABASE_NAME;
|
$loopCount = (int)$chooseName;
|
||||||
} elseif (defined('SS_DATABASE_CHOOSE_NAME') && SS_DATABASE_CHOOSE_NAME) {
|
|
||||||
$loopCount = (int)SS_DATABASE_CHOOSE_NAME;
|
|
||||||
$databaseDir = BASE_PATH;
|
$databaseDir = BASE_PATH;
|
||||||
for ($i=0; $i<$loopCount-1;
|
for ($i=0; $i<$loopCount-1; $i++) {
|
||||||
$i++) {
|
|
||||||
$databaseDir = dirname($databaseDir);
|
$databaseDir = dirname($databaseDir);
|
||||||
}
|
}
|
||||||
$database = "SS_" . basename($databaseDir);
|
$database = getenv('SS_DATABASE_PREFIX') ?: 'SS_';
|
||||||
|
$database .= basename($databaseDir);
|
||||||
$database = str_replace('.', '', $database);
|
$database = str_replace('.', '', $database);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined('SS_DATABASE_USERNAME') && defined('SS_DATABASE_PASSWORD')) {
|
if ($dbUser = getenv('SS_DATABASE_USERNAME')) {
|
||||||
global $databaseConfig;
|
global $databaseConfig;
|
||||||
|
|
||||||
// Checks if the database global is defined (if present, wraps with prefix and suffix)
|
// Checks if the database global is defined (if present, wraps with prefix and suffix)
|
||||||
@ -105,69 +83,69 @@ if (defined('SS_DATABASE_USERNAME') && defined('SS_DATABASE_PASSWORD')) {
|
|||||||
if (!$name) {
|
if (!$name) {
|
||||||
return '';
|
return '';
|
||||||
} else {
|
} else {
|
||||||
return (defined('SS_DATABASE_PREFIX') ? SS_DATABASE_PREFIX : '')
|
return (getenv('SS_DATABASE_PREFIX') ?: '')
|
||||||
. $name
|
. $name
|
||||||
. (defined('SS_DATABASE_SUFFIX') ? SS_DATABASE_SUFFIX : '');
|
. (getenv('SS_DATABASE_SUFFIX') ?: '');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @skipUpgrade */
|
/** @skipUpgrade */
|
||||||
$databaseConfig = array(
|
$databaseConfig = array(
|
||||||
"type" => defined('SS_DATABASE_CLASS') ? SS_DATABASE_CLASS : 'MySQLDatabase',
|
"type" => getenv('SS_DATABASE_CLASS') ?: 'MySQLDatabase',
|
||||||
"server" => defined('SS_DATABASE_SERVER') ? SS_DATABASE_SERVER : 'localhost',
|
"server" => getenv('SS_DATABASE_SERVER') ?: 'localhost',
|
||||||
"username" => SS_DATABASE_USERNAME,
|
"username" => $dbUser,
|
||||||
"password" => SS_DATABASE_PASSWORD,
|
"password" => getenv('SS_DATABASE_PASSWORD'),
|
||||||
"database" => $databaseNameWrapper($database),
|
"database" => $databaseNameWrapper($database),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Set the port if called for
|
// Set the port if called for
|
||||||
if (defined('SS_DATABASE_PORT')) {
|
if ($dbPort = getenv('SS_DATABASE_PORT')) {
|
||||||
$databaseConfig['port'] = SS_DATABASE_PORT;
|
$databaseConfig['port'] = $dbPort;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the timezone if called for
|
// Set the timezone if called for
|
||||||
if (defined('SS_DATABASE_TIMEZONE')) {
|
if ($dbTZ = getenv('SS_DATABASE_TIMEZONE')) {
|
||||||
$databaseConfig['timezone'] = SS_DATABASE_TIMEZONE;
|
$databaseConfig['timezone'] = $dbTZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
// For schema enabled drivers:
|
// For schema enabled drivers:
|
||||||
if (defined('SS_DATABASE_SCHEMA')) {
|
if ($dbSchema = getenv('SS_DATABASE_SCHEMA')) {
|
||||||
$databaseConfig["schema"] = SS_DATABASE_SCHEMA;
|
$databaseConfig["schema"] = $dbSchema;
|
||||||
}
|
}
|
||||||
|
|
||||||
// For SQlite3 memory databases (mainly for testing purposes)
|
// For SQlite3 memory databases (mainly for testing purposes)
|
||||||
if (defined('SS_DATABASE_MEMORY')) {
|
if ($dbMemory = getenv('SS_DATABASE_MEMORY')) {
|
||||||
$databaseConfig["memory"] = SS_DATABASE_MEMORY;
|
$databaseConfig["memory"] = $dbMemory;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined('SS_SEND_ALL_EMAILS_TO')) {
|
if ($sendAllEmailsTo = getenv('SS_SEND_ALL_EMAILS_TO')) {
|
||||||
Email::config()->send_all_emails_to = SS_SEND_ALL_EMAILS_TO;
|
Email::config()->send_all_emails_to = $sendAllEmailsTo;
|
||||||
}
|
}
|
||||||
if (defined('SS_SEND_ALL_EMAILS_FROM')) {
|
if ($sendAllEmailsFrom = getenv('SS_SEND_ALL_EMAILS_FROM')) {
|
||||||
Email::config()->send_all_emails_from = SS_SEND_ALL_EMAILS_FROM;
|
Email::config()->send_all_emails_from = $sendAllEmailsFrom;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined('SS_DEFAULT_ADMIN_USERNAME')) {
|
if ($defaultAdminUser = getenv('SS_DEFAULT_ADMIN_USERNAME')) {
|
||||||
if (!defined('SS_DEFAULT_ADMIN_PASSWORD')) {
|
if (!$defaultAdminPass = getenv('SS_DEFAULT_ADMIN_PASSWORD')) {
|
||||||
user_error(
|
user_error(
|
||||||
"SS_DEFAULT_ADMIN_PASSWORD must be defined in your _ss_environment.php,"
|
"SS_DEFAULT_ADMIN_PASSWORD must be defined in your environment,"
|
||||||
. "if SS_DEFAULT_ADMIN_USERNAME is defined. See "
|
. "if SS_DEFAULT_ADMIN_USERNAME is defined. See "
|
||||||
. "http://doc.silverstripe.org/framework/en/topics/environment-management for more information",
|
. "http://doc.silverstripe.org/framework/en/topics/environment-management for more information",
|
||||||
E_USER_ERROR
|
E_USER_ERROR
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
Security::setDefaultAdmin(SS_DEFAULT_ADMIN_USERNAME, SS_DEFAULT_ADMIN_PASSWORD);
|
Security::setDefaultAdmin($defaultAdminUser, $defaultAdminPass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (defined('SS_USE_BASIC_AUTH') && SS_USE_BASIC_AUTH) {
|
if ($useBasicAuth = getenv('SS_USE_BASIC_AUTH')) {
|
||||||
BasicAuth::config()->entire_site_protected = SS_USE_BASIC_AUTH;
|
BasicAuth::config()->entire_site_protected = $useBasicAuth;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined('SS_ERROR_LOG')) {
|
if ($errorLog = getenv('SS_ERROR_LOG')) {
|
||||||
$logger = Injector::inst()->get('Logger');
|
$logger = Injector::inst()->get('Logger');
|
||||||
if ($logger instanceof Logger) {
|
if ($logger instanceof Logger) {
|
||||||
$logger->pushHandler(new StreamHandler(BASE_PATH . '/' . SS_ERROR_LOG, Logger::WARNING));
|
$logger->pushHandler(new StreamHandler(BASE_PATH . '/' . $errorLog, Logger::WARNING));
|
||||||
} else {
|
} else {
|
||||||
user_error("SS_ERROR_LOG setting only works with Monolog, you are using another logger", E_USER_WARNING);
|
user_error("SS_ERROR_LOG setting only works with Monolog, you are using another logger", E_USER_WARNING);
|
||||||
}
|
}
|
||||||
@ -175,3 +153,24 @@ if (defined('SS_ERROR_LOG')) {
|
|||||||
|
|
||||||
// Allow database adapters to handle their own configuration
|
// Allow database adapters to handle their own configuration
|
||||||
DatabaseAdapterRegistry::autoconfigure();
|
DatabaseAdapterRegistry::autoconfigure();
|
||||||
|
|
||||||
|
unset(
|
||||||
|
$envType,
|
||||||
|
$chooseName,
|
||||||
|
$loopCount,
|
||||||
|
$databaseDir,
|
||||||
|
$i,
|
||||||
|
$databaseNameWrapper,
|
||||||
|
$dbUser,
|
||||||
|
$dbPort,
|
||||||
|
$dbTZ,
|
||||||
|
$dbSchema,
|
||||||
|
$dbMemory,
|
||||||
|
$sendAllEmailsTo,
|
||||||
|
$sendAllEmailsFrom,
|
||||||
|
$defaultAdminUser,
|
||||||
|
$defaultAdminPass,
|
||||||
|
$useBasicAuth,
|
||||||
|
$errorLog,
|
||||||
|
$logger
|
||||||
|
);
|
||||||
|
@ -1,34 +1,37 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Bootstrap _ss_environment.php
|
// Bootstrap environment variables
|
||||||
|
|
||||||
if (!defined('SS_ENVIRONMENT_TYPE')) {
|
use Dotenv\Loader;
|
||||||
define('SS_ENVIRONMENT_TYPE', 'dev');
|
|
||||||
|
$loader = new Loader(null);
|
||||||
|
if (!getenv('SS_ENVIRONMENT_TYPE')) {
|
||||||
|
$loader->setEnvironmentVariable('SS_ENVIRONMENT_TYPE', 'dev');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!defined('SS_DATABASE_CLASS') && !defined('SS_DATABASE_USERNAME')) {
|
if (!getenv('SS_DATABASE_CLASS') && !getenv('SS_DATABASE_USERNAME')) {
|
||||||
// The default settings let us define the database config via environment vars
|
// The default settings let us define the database config via environment vars
|
||||||
// Database connection, including PDO and legacy ORM support
|
// Database connection, including PDO and legacy ORM support
|
||||||
switch (getenv('DB')) {
|
switch (getenv('DB')) {
|
||||||
case "PGSQL";
|
case "PGSQL";
|
||||||
define('SS_DATABASE_CLASS', getenv('PDO') ? 'PostgrePDODatabase' : 'PostgreSQLDatabase');
|
$loader->setEnvironmentVariable('SS_DATABASE_CLASS', getenv('PDO') ? 'PostgrePDODatabase' : 'PostgreSQLDatabase');
|
||||||
define('SS_DATABASE_USERNAME', 'postgres');
|
$loader->setEnvironmentVariable('SS_DATABASE_USERNAME', 'postgres');
|
||||||
define('SS_DATABASE_PASSWORD', '');
|
$loader->setEnvironmentVariable('SS_DATABASE_PASSWORD', '');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "SQLITE":
|
case "SQLITE":
|
||||||
define('SS_DATABASE_CLASS', getenv('PDO') ? 'SQLite3PDODatabase' : 'SQLite3Database');
|
$loader->setEnvironmentVariable('SS_DATABASE_CLASS', getenv('PDO') ? 'SQLite3PDODatabase' : 'SQLite3Database');
|
||||||
define('SS_DATABASE_USERNAME', 'root');
|
$loader->setEnvironmentVariable('SS_DATABASE_USERNAME', 'root');
|
||||||
define('SS_DATABASE_PASSWORD', '');
|
$loader->setEnvironmentVariable('SS_DATABASE_PASSWORD', '');
|
||||||
define('SS_SQLITE_DATABASE_PATH', ':memory:');
|
$loader->setEnvironmentVariable('SS_SQLITE_DATABASE_PATH', ':memory:');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
define('SS_DATABASE_CLASS', getenv('PDO') ? 'MySQLPDODatabase' : 'MySQLDatabase');
|
$loader->setEnvironmentVariable('SS_DATABASE_CLASS', getenv('PDO') ? 'MySQLPDODatabase' : 'MySQLDatabase');
|
||||||
define('SS_DATABASE_USERNAME', 'root');
|
$loader->setEnvironmentVariable('SS_DATABASE_USERNAME', 'root');
|
||||||
define('SS_DATABASE_PASSWORD', '');
|
$loader->setEnvironmentVariable('SS_DATABASE_PASSWORD', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
define('SS_DATABASE_SERVER', '127.0.0.1');
|
$loader->setEnvironmentVariable('SS_DATABASE_SERVER', '127.0.0.1');
|
||||||
define('SS_DATABASE_CHOOSE_NAME', true);
|
$loader->setEnvironmentVariable('SS_DATABASE_CHOOSE_NAME', true);
|
||||||
}
|
}
|
||||||
|
@ -427,7 +427,9 @@ class ConfigManifestTest extends SapphireTest
|
|||||||
|
|
||||||
public function testEnvVarSetRules()
|
public function testEnvVarSetRules()
|
||||||
{
|
{
|
||||||
$_ENV['ENVVARSET_FOO'] = 1;
|
$loader = new \Dotenv\Loader(null);
|
||||||
|
|
||||||
|
$loader->setEnvironmentVariable('ENVVARSET_FOO', 1);
|
||||||
$config = $this->getConfigFixtureValue('EnvVarSet');
|
$config = $this->getConfigFixtureValue('EnvVarSet');
|
||||||
|
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
@ -463,7 +465,9 @@ class ConfigManifestTest extends SapphireTest
|
|||||||
|
|
||||||
public function testEnvOrConstantMatchesValueRules()
|
public function testEnvOrConstantMatchesValueRules()
|
||||||
{
|
{
|
||||||
$_ENV['ENVORCONSTANTMATCHESVALUE_FOO'] = 'Foo';
|
$loader = new \Dotenv\Loader(null);
|
||||||
|
|
||||||
|
$loader->setEnvironmentVariable('ENVORCONSTANTMATCHESVALUE_FOO', 'Foo');
|
||||||
define('ENVORCONSTANTMATCHESVALUE_BAR', 'Bar');
|
define('ENVORCONSTANTMATCHESVALUE_BAR', 'Bar');
|
||||||
$config = $this->getConfigFixtureValue('EnvOrConstantMatchesValue');
|
$config = $this->getConfigFixtureValue('EnvOrConstantMatchesValue');
|
||||||
|
|
||||||
@ -537,7 +541,9 @@ class ConfigManifestTest extends SapphireTest
|
|||||||
|
|
||||||
public function testMultipleRules()
|
public function testMultipleRules()
|
||||||
{
|
{
|
||||||
$_ENV['MULTIPLERULES_ENVVARIABLESET'] = 1;
|
$loader = new \Dotenv\Loader(null);
|
||||||
|
|
||||||
|
$loader->setEnvironmentVariable('MULTIPLERULES_ENVVARIABLESET', 1);
|
||||||
define('MULTIPLERULES_DEFINEDCONSTANT', 'defined');
|
define('MULTIPLERULES_DEFINEDCONSTANT', 'defined');
|
||||||
$config = $this->getConfigFixtureValue('MultipleRules');
|
$config = $this->getConfigFixtureValue('MultipleRules');
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ class DBTest extends SapphireTest
|
|||||||
public function testValidAlternativeDatabaseName()
|
public function testValidAlternativeDatabaseName()
|
||||||
{
|
{
|
||||||
|
|
||||||
$prefix = defined('SS_DATABASE_PREFIX') ? SS_DATABASE_PREFIX : 'ss_';
|
$prefix = getenv('SS_DATABASE_PREFIX') ?: 'ss_';
|
||||||
|
|
||||||
Director::config()->update('environment_type', 'dev');
|
Director::config()->update('environment_type', 'dev');
|
||||||
$this->assertTrue(DB::valid_alternative_database_name($prefix.'tmpdb1234567'));
|
$this->assertTrue(DB::valid_alternative_database_name($prefix.'tmpdb1234567'));
|
||||||
|
Loading…
Reference in New Issue
Block a user