diff --git a/lib/private/Config.php b/lib/private/Config.php
index e6a27a76b2e4fb853c4e7b45eb8db8b280d47c7a..f15854b611384bacabaf34f09713ad280a4235f7 100644
--- a/lib/private/Config.php
+++ b/lib/private/Config.php
@@ -39,6 +39,9 @@ namespace OC;
  * configuration file of ownCloud.
  */
 class Config {
+
+	const ENV_PREFIX = 'NC_';
+
 	/** @var array Associative array ($key => $value) */
 	protected $cache = array();
 	/** @var string */
@@ -71,15 +74,22 @@ class Config {
 	}
 
 	/**
-	 * Gets a value from config.php
+	 * Returns a config value
 	 *
-	 * If it does not exist, $default will be returned.
+	 * gets its value from an `NC_` prefixed environment variable
+	 * if it doesn't exist from config.php
+	 * if this doesn't exist either, it will return the given `$default`
 	 *
 	 * @param string $key key
 	 * @param mixed $default = null default value
 	 * @return mixed the value or $default
 	 */
 	public function getValue($key, $default = null) {
+		$envValue = getenv(self::ENV_PREFIX . $key);
+		if ($envValue !== false) {
+			return $envValue;
+		}
+
 		if (isset($this->cache[$key])) {
 			return $this->cache[$key];
 		}
diff --git a/tests/lib/ConfigTest.php b/tests/lib/ConfigTest.php
index 74dcdc192cebf28c7d1ce99ca61ccbbacfcc62cf..2a4c962034079b18e546b1bea78ce66c0d5400fe 100644
--- a/tests/lib/ConfigTest.php
+++ b/tests/lib/ConfigTest.php
@@ -48,6 +48,27 @@ class ConfigTest extends TestCase {
 		$this->assertSame(array('Appenzeller', 'Guinness', 'Kölsch'), $this->config->getValue('beers'));
 	}
 
+	public function testGetValueReturnsEnvironmentValueIfSet() {
+		$this->assertEquals('bar', $this->config->getValue('foo'));
+		putenv('NC_foo=baz');
+		$this->assertEquals('baz', $this->config->getValue('foo'));
+		putenv('NC_foo'); // unset the env variable
+	}
+
+	public function testGetValueReturnsEnvironmentValueIfSetToZero() {
+		$this->assertEquals('bar', $this->config->getValue('foo'));
+		putenv('NC_foo=0');
+		$this->assertEquals('0', $this->config->getValue('foo'));
+		putenv('NC_foo'); // unset the env variable
+	}
+
+	public function testGetValueReturnsEnvironmentValueIfSetToFalse() {
+		$this->assertEquals('bar', $this->config->getValue('foo'));
+		putenv('NC_foo=false');
+		$this->assertEquals('false', $this->config->getValue('foo'));
+		putenv('NC_foo'); // unset the env variable
+	}
+
 	public function testSetValue() {
 		$this->config->setValue('foo', 'moo');
 		$expectedConfig = $this->initialConfig;