diff --git a/config/config.sample.php b/config/config.sample.php
index e613609bcef91b2a8fa569dab6186e066ad0b753..1bfae366fff3f835ba663b6598a11f00049beb17 100755
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -41,16 +41,16 @@ $CONFIG = array(
 /* Blacklist a specific file and disallow the upload of files with this name - WARNING: USE THIS ONLY IF YOU KNOW WHAT YOU ARE DOING. */
 "blacklisted_files" => array('.htaccess'),
 
-/* The automatic hostname detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the automatic detection. You can also add a port. For example "www.example.com:88" */
+/* The automatic hostname detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. You can also add a port. For example "www.example.com:88" */
 "overwritehost" => "",
 
-/* The automatic protocol detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the protocol detection. For example "https" */
+/* The automatic protocol detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the protocol detection. For example "https" */
 "overwriteprotocol" => "",
 
-/* The automatic webroot detection of ownCloud can fail in certain reverse proxy situations. This option allows to manually override the automatic detection. For example "/domain.tld/ownCloud". The value "/" can be used to remove the root. */
+/* The automatic webroot detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. For example "/domain.tld/ownCloud". The value "/" can be used to remove the root. */
 "overwritewebroot" => "",
 
-/* The automatic detection of ownCloud can fail in certain reverse proxy situations. This option allows to define a manually override condition as regular expression for the remote ip address. For example "^10\.0\.0\.[1-3]$" */
+/* The automatic detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to define a manually override condition as regular expression for the remote ip address. For example "^10\.0\.0\.[1-3]$" */
 "overwritecondaddr" => "",
 
 /* A proxy to use to connect to the internet. For example "myproxy.org:88" */
diff --git a/lib/base.php b/lib/base.php
index b526840a97d87b4697af5a4ea7ad49950f69c9bc..840d904471175b0d1f6f22d7b7fd677fd8a2804f 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -117,10 +117,18 @@ class OC {
 			}
 		}
 
-		OC::$WEBROOT = substr($scriptName, 0, strlen($scriptName) - strlen(OC::$SUBURI));
+		if (substr($scriptName, 0 - strlen(OC::$SUBURI)) === OC::$SUBURI) {
+			OC::$WEBROOT = substr($scriptName, 0, 0 - strlen(OC::$SUBURI));
 
-		if (OC::$WEBROOT != '' and OC::$WEBROOT[0] !== '/') {
-			OC::$WEBROOT = '/' . OC::$WEBROOT;
+			if (OC::$WEBROOT != '' && OC::$WEBROOT[0] !== '/') {
+				OC::$WEBROOT = '/' . OC::$WEBROOT;
+			}
+		} else {
+			// The scriptName is not ending with OC::$SUBURI
+			// This most likely means that we are calling from CLI.
+			// However some cron jobs still need to generate
+			// a web URL, so we use overwritewebroot as a fallback.
+			OC::$WEBROOT = OC_Config::getValue('overwritewebroot', '');
 		}
 
 		// search the 3rdparty folder
diff --git a/lib/private/request.php b/lib/private/request.php
index 619eae3e9b5c094ae31d88d0dc6ec44a84c46b01..5fd5b3a7197d2cd5fb336d48ca7ed5a29a5273a2 100755
--- a/lib/private/request.php
+++ b/lib/private/request.php
@@ -95,7 +95,7 @@ class OC_Request {
 	 * reverse proxies
 	 */
 	public static function serverHost() {
-		if(OC::$CLI) {
+		if (OC::$CLI && defined('PHPUNIT_RUN')) {
 			return 'localhost';
 		}