Datum: 26.09.2008
, Kategorie:
PHP
Microsoft spart wo es kann und verzichtet im Windows IIS unter PHP auf die Umgebungsvariable REQUEST_URI. Hier eine Lösung für das Problem:
<?php
/**
* Request URI
*/
function my_request_uri()
{
if (isset($_SERVER['REQUEST_URI'])
and $_SERVER['REQUEST_URI'] != '') {
return $_SERVER['REQUEST_URI'];
}
$path = '';
if (isset($_SERVER['PATH_INFO'])
and $_SERVER['PATH_INFO'] != '') {
$path = $_SERVER['PATH_INFO'];
}
$query = '';
if (isset($_SERVER['QUERY_STRING'])
and $_SERVER['QUERY_STRING'] != '') {
$query = '?' . $_SERVER['QUERY_STRING'];
}
if (isset($_SERVER['SCRIPT_NAME'])
and $_SERVER['SCRIPT_NAME'] != '') {
return $_SERVER['SCRIPT_NAME'] . $path . $query;
}
if (isset($_SERVER['PHP_SELF'])
and $_SERVER['PHP_SELF'] != '') {
return $_SERVER['PHP_SELF'] . $query;
}
if (isset($_SERVER['SCRIPT_FILENAME'])
and $_SERVER['SCRIPT_FILENAME'] != ''
and isset($_SERVER['DOCUMENT_ROOT'])) {
return str_replace($_SERVER['DOCUMENT_ROOT'], '', $_SERVER['SCRIPT_FILENAME']) . $path . $query;
}
return false;
}
if ($requestURI = my_request_uri()) {
echo $requestURI;
}
?>
Beim Aufruf des Scripts unter http://www.example.com/test.php/my/path?test=123 würde folgendes ausgegeben:
/test.php/my/path?test=123