summaryrefslogtreecommitdiffstats
path: root/system/core/URI.php
diff options
context:
space:
mode:
authorAndrey Andreev <narf@bofh.bg>2012-10-31 23:45:26 +0100
committerAndrey Andreev <narf@bofh.bg>2012-10-31 23:45:26 +0100
commit3b72eb58e61581b7e92012a322be48e216491d7c (patch)
treea5ba5da8d4663b434cbef5fdabce8bc51a6cfe3b /system/core/URI.php
parentea6688b3b9a7a208d1c44439c4f01801fd3b8c65 (diff)
Changed URI auto-detection to try PATH_INFO first
(thanks to @sourcejedi, PR #1326) Up until PHP 5.2.4 (which is our new lowest requirement), there was a bug related to PATH_INFO which made REQUEST_URI a more reliable choice. This is now no longer the case, see https://bugs.php.net/bug.php?id=31892 for more details. Also removed ORIG_PATH_INFO from the suggested alternatives for uri_protocol in application/config/config.php as it will not exist in most of PHP's recent versions and is pointless when you can use PATH_INFO anyway.
Diffstat (limited to 'system/core/URI.php')
-rw-r--r--system/core/URI.php14
1 files changed, 6 insertions, 8 deletions
diff --git a/system/core/URI.php b/system/core/URI.php
index 3b7718fff..309c77630 100644
--- a/system/core/URI.php
+++ b/system/core/URI.php
@@ -102,23 +102,21 @@ class CI_URI {
return;
}
- // Let's try the REQUEST_URI first, this will work in most situations
- if (($uri = $this->_parse_request_uri()) !== '')
+ // Is there a PATH_INFO variable? This should be the easiest solution.
+ if (isset($_SERVER['PATH_INFO']))
{
- $this->_set_uri_string($uri);
+ $this->_set_uri_string($_SERVER['PATH_INFO']);
return;
}
- // Is there a PATH_INFO variable?
- // Note: some servers seem to have trouble with getenv() so we'll test it two ways
- $uri = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO');
- if (trim($uri, '/') !== '' && $uri !== '/'.SELF)
+ // Let's try REQUEST_URI then, this will work in most situations
+ if (($uri = $this->_parse_request_uri()) !== '')
{
$this->_set_uri_string($uri);
return;
}
- // No PATH_INFO?... What about QUERY_STRING?
+ // No REQUEST_URI either?... What about QUERY_STRING?
if (($uri = $this->_parse_query_string()) !== '')
{
$this->_set_uri_string($uri);