Chyba v RequestFactory u IIS7

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Senfix
Člen | 8
+
0
-

Ahoj,

zprovoznuji si z určitých důvodů IIS server přes VirtualBox v Linuxu a narazil jsem na jeden problem při spuštěí aplikace.

Jenom pro úplnost používám Windows 2008 IIS 7 PHP 5.5 a Nette 2.1.2

Při vstupu na web mi docházelo k redirection loop takže jsem hledal a hledal a našel jsem že IIS mi neposílá všechny informace tak jak nette předpokládá. V RequestFactory jsem našel kod

<?php
// path & query
if (isset($_SERVER['REQUEST_URI'])) { // Apache, IIS 6.0
    $requestUrl = $_SERVER['REQUEST_URI'];
} elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0 (PHP as CGI ?)
    $requestUrl = $_SERVER['ORIG_PATH_INFO'];
    if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') {
        $requestUrl .= '?' . $_SERVER['QUERY_STRING'];
    }
 } else {
    $requestUrl = '';
}
?>

Problémem bylo že v REQUEST_URI se nenalézal query string takže mi nette dělalo redirect na základě kanonizace.

Problém jsem pořašil následující berličkou kdy případně query string přidám.

<?php
// path & query
if (isset($_SERVER['REQUEST_URI'])) { // Apache, IIS 6.0
    $requestUrl = $_SERVER['REQUEST_URI'];
    if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') { //broken IIS request uri
    	if(strpos($_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING']) === FALSE){
    		$requestUrl .= '?' . $_SERVER['QUERY_STRING'];
    	}
    }
} elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0 (PHP as CGI ?)
    $requestUrl = $_SERVER['ORIG_PATH_INFO'];
    if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') {
        $requestUrl .= '?' . $_SERVER['QUERY_STRING'];
    }
} else {
    $requestUrl = '';
}
?>

Otázkou je jestli by se todle nemělo dostat do veřejného Nette nebo je to jen mnou špatně nastaveným IIS serverem. Každopádně by to mohlo někomu ušetřit spoustu práce při hledání.

Editoval Senfix (24. 8. 2014 20:49)

Filip Procházka
Moderator | 4668
+
0
-

A to nejde nastavit přímo v tom http serveru, aby to neposílal phpku takhle retardovaně?

Senfix
Člen | 8
+
0
-

zřejmě ano, ale co kdyby to měli takhle blbě na hostingu a ty jsi s tim nemohl nic dělat. Teda kromě změny hostingu :D

Quinix
Člen | 108
+
0
-

Podle všeho se zdá že na tenhle problém byl před 6 lety(!) vydaný update

http://forums.iis.net/t/1151378.aspx?…