From 40d4bfe4da2ac8381c950b9f00c5ab1be566a631 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Thu, 19 May 2016 18:42:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BRequest=E7=B1=BBbaseUrl?= =?UTF-8?q?=E5=92=8CbasePath=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Request.php | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/library/think/Request.php b/library/think/Request.php index 50c8707d..8f1b6d2b 100644 --- a/library/think/Request.php +++ b/library/think/Request.php @@ -234,10 +234,20 @@ class Request } elseif ($this->basePath) { return $this->basePath; } else { - $url = $this->scheme() . '://' . $this->host(); - $url .= rtrim($_SERVER['SCRIPT_NAME'], '/'); - $this->basePath = $url; - return $url; + $script_name = basename($_SERVER['SCRIPT_FILENAME']); + if (basename($_SERVER['SCRIPT_NAME']) === $script_name) { + $url = $_SERVER['SCRIPT_NAME']; + } elseif (basename($_SERVER['PHP_SELF']) === $script_name) { + $url = $_SERVER['PHP_SELF']; + } elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $script_name) { + $url = $_SERVER['ORIG_SCRIPT_NAME']; + } elseif (($pos = strpos($_SERVER['PHP_SELF'], '/' . $script_name)) !== false) { + $url = substr($_SERVER['SCRIPT_NAME'], 0, $pos) . '/' . $script_name; + } elseif (isset($_SERVER['DOCUMENT_ROOT']) && strpos($_SERVER['SCRIPT_FILENAME'], $_SERVER['DOCUMENT_ROOT']) === 0) { + $url = str_replace('\\', '/', str_replace($_SERVER['DOCUMENT_ROOT'], '', $_SERVER['SCRIPT_FILENAME'])); + } + $this->basePath = $this->scheme() . '://' . $this->host() . $url; + return $this->basePath; } } @@ -254,8 +264,7 @@ class Request } elseif ($this->root) { return $this->root; } else { - $_root = rtrim(dirname($this->baseUrl()), '/'); - $this->root = ('/' == $_root || '\\' == $_root) ? '' : $_root; + $this->root = rtrim(str_replace('\\', '/', dirname($this->basePath())), '/'); return $this->root; } }