From 56dfcce9b97084476b0637a70b468e4e0aa0f75d Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 7 Jun 2010 02:18:21 +0200 Subject: [PATCH] improved detection of WEBROOT --- inc/lib_base.php | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/inc/lib_base.php b/inc/lib_base.php index 666e0d6524c..cd622f1f5b6 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; } -- 2.39.5