diff --git a/inc/lib_base.php b/inc/lib_base.php
index 666e0d6524c00881e1c8fb39d889a757493189aa..cd622f1f5b645bfccaa49f640a92f970fa888f40 100755
--- a/inc/lib_base.php
+++ b/inc/lib_base.php
@@ -35,8 +35,27 @@ session_start();
 $SERVERROOT=substr(__FILE__,0,-17);
 $DOCUMENTROOT=$_SERVER['DOCUMENT_ROOT'];
 $SERVERROOT=str_replace("\\",'/',$SERVERROOT);
-$count=strlen($DOCUMENTROOT);
-$WEBROOT=substr($SERVERROOT,$count);
+if(strpos($SERVERROOT,$DOCUMENTROOT)===0){
+	//if the serverroot is a subdir of the documentroot we can use this
+	$count=strlen($DOCUMENTROOT);
+	$WEBROOT=substr($SERVERROOT,$count);
+}else{
+	//try some common patterns
+	$WEBROOT='';
+	if(strpos($_SERVER['REQUEST_URI'],'/~')!==false){
+		//owncloud is probable installed in a users home folder, extract the username from the uri and use it as base for the webroot
+		$part=substr($_SERVER['REQUEST_URI'],strpos($_SERVER['REQUEST_URI'],'/~')+1);
+		$part=substr($part,0,strpos($part,'/'));
+		$WEBROOT.='/'.$part;
+	}
+	if(strpos($SERVERROOT,'public_html')!==false){
+		//a common used folder name for websevers to store their sites
+		if($WEBROOT{strlen($WEBROOT)-1}!=='/'){
+			$WEBROOT.='/';
+		}
+		$WEBROOT.=substr($SERVERROOT,strpos($SERVERROOT,'public_html')+strlen('public_html'));
+	}
+}
 if($WEBROOT{0}!=='/' and $WEBROOT!=''){
 	$WEBROOT='/'.$WEBROOT;
 }