r2636 - fixed IIS-specific issues with accessing via HTTP or from docroot (reported...
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 14 Apr 2009 17:22:18 +0000 (17:22 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 14 Apr 2009 17:22:18 +0000 (17:22 +0000)
ChangeLog
inc/init.php
install.php
upgrade.php

index d9203ed34b8630f4bd2a6b39451d7eb9a26edd2e..f09c28d3e521d400971ac664cf64a542ac43b3f4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -29,6 +29,7 @@
        bugfix: show error message for duplicate IPv4 network record
        bugfix: it was possible to access the system as any existing
                LDAP user w/o his password (reported by Igor Shishkin)
+       bugfix: fixed IIS-specific issues with accessing via HTTP or from docroot (reported by Sean Brown)
 0.16.4 2008-11-04
        bugfix: display VS/RS config block in RS pool view
        bugfix: resolve tabindex issues in many forms
index 9583b854f5b6475a1d8096a7d04d194619d99b70..6b8580b6e4f9919dd00dd87a78b215c34314f048 100644 (file)
@@ -9,10 +9,16 @@
 *
 */
 
-$root = (empty($_SERVER['HTTPS'])?'http':'https').
-       '://'.
-       (isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:($_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80'?'':$_SERVER['SERVER_PORT']))).
-       dirname($_SERVER['PHP_SELF']);
+// "Note that when using ISAPI with IIS, the value will be 'off' if the
+// request was not made through the HTTPS protocol."
+$root = (empty($_SERVER['HTTPS']) or $_SERVER['HTTPS'] == 'off') ? 'http://' : 'https://';
+$root .= isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80'?'':$_SERVER['SERVER_PORT']));
+// "Since PHP 4.3.0, you will often get a slash or a dot back from
+// dirname() in situations where the older functionality would have given
+// you the empty string."
+// "On Windows, both slash (/) and backslash (\) are used as directory
+// separator character."
+$root .= strtr (dirname ($_SERVER['PHP_SELF']), '\\', '/');
 if (substr ($root, -1) != '/')
        $root .= '/';
 
index 46028994da3258ebcef13769443c533d6ab9c17c..b6e55fcb0e79dd57585b68556598a5a2bc3c1d19 100644 (file)
@@ -128,7 +128,7 @@ function platform_is_ok ()
        echo '</td></tr>';
 
        echo '<tr><td>HTTP scheme</td>';
-       if (!empty($_SERVER['HTTPS']))
+       if (!empty($_SERVER['HTTPS']) and $_SERVER['HTTPS'] != 'off')
                echo '<td class=msg_success>HTTPs';
        else
                echo '<td class=msg_warning>HTTP (all your passwords will be transmitted in cleartext)';
index 1d81c4036ac0c08d13d72560ebb886113a56bdf8..f30201e32f44a812f87bd3178a917941bd3da711 100644 (file)
@@ -248,10 +248,9 @@ CREATE TABLE `FileLink` (
 //
 // ******************************************************************
 
-$root = (empty($_SERVER['HTTPS'])?'http':'https').
-       '://'.
-       (isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:($_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80'?'':$_SERVER['SERVER_PORT']))).
-       dirname($_SERVER['PHP_SELF']);
+$root = (empty($_SERVER['HTTPS']) or $_SERVER['HTTPS'] == 'off') ? 'http://' : 'https://';
+$root .= isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80'?'':$_SERVER['SERVER_PORT']));
+$root .= strtr (dirname ($_SERVER['PHP_SELF']), '\\', '/');
 if (substr ($root, -1) != '/')
        $root .= '/';