потерял $_SERVER['SCRIPT_URI']

Статус
В этой теме нельзя размещать новые ответы.

phillip

Полезный
Регистрация
4 Сен 2007
Сообщения
411
Реакции
15
переехал на новый хост. на старом у меня была доступна суперглобальная $_SERVER['SCRIPT_URI'] а на новом ее нет. а она уже задействована во многих скриптах.
Как-то может в пхп.ини прописывается чтоб она была или как
 
похоже что php на сервере работает в режиме cgi и скрипт будет cgi то есть не php значит пустое значение, но можно эмулировать
PHP:
if (empty($_SERVER['SCRIPT_URI'])) {
   $_SERVER['SCRIPT_URI'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI'];
}
 
а как узнать, в режиме cgi или нет у меня пхп? и каким образом это влияет на другие мои скрипты? может ли от этого еще где-то трабла вылезти?
 
функция phpinfo(); показывает всю информацию, и там есть строка Server API в которой указан режим. А проблем обычно минимум, пропадут какие-то системные переменные, вобщем ничего такого чего нельзя обойти
 
Если точнее все переменные можно посмотреть так phpinfo(32);
 
Server API Apache 2.0 Handler
значит не cgi. Тогда в чем может быть дело?
кстати счас выяснил что $_SERVER['SCRIPT_URI'] не идентично 'http://'.$_SERVER['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI']
во втором случае еще $_GET переменные подставляются. допустим

в то время как
 
$_SERVER['REQUEST_URI']
или
$_SERVER['SCRIPT_NAME']
Не подойдут?
 
может что из этого поможет

PHP:
  /**
   * Запрашиваемый адрес (URI)
   * @return  mixed URI или false если не определен
   */
  function uri() {
    global $REQUEST_URI;
    if(empty($REQUEST_URI)):
      if(!empty($_SERVER) && isset($_SERVER['REQUEST_URI'])): $REQUEST_URI=$_SERVER['REQUEST_URI'];
      elseif(@getenv('REQUEST_URI')): $REQUEST_URI=getenv('REQUEST_URI');
      endif;
    endif;
    if(!empty($REQUEST_URI)): return $REQUEST_URI;
    endif;
    return false;
  }
  /**
   * Страницу-рефферер, откуда пришел пользователь (REFERER)
   * @return  mixed REFERER или false если не определен
   */
  function referer() {
    global $HTTP_REFERER;
    if(empty($HTTP_REFERER)):
      if(!empty($_SERVER) && isset($_SERVER['HTTP_REFERER'])): $HTTP_REFERER=$_SERVER['HTTP_REFERER'];
      elseif(@getenv('HTTP_REFERER')): $HTTP_REFERER=getenv('HTTP_REFERER');
      endif;
    endif;
    if(!empty($HTTP_REFERER)): return $HTTP_REFERER;
    endif;
    return false;
  }
  /**
   * Определьне хоста (HOST)
   * @return  mixed имя HOST или false если не определен
   */
  function host() {
    global $REMOTE_HOST;
    global $HTTP_HOST;
    if(empty($REMOTE_HOST)):
      if(!empty($_SERVER) && isset($_SERVER['REMOTE_HOST'])): $REMOTE_HOST=$_SERVER['REMOTE_HOST'];
      elseif(@getenv('REMOTE_HOST')): $REMOTE_HOST=getenv('REMOTE_HOST');
      endif;
    endif;
    if(empty($HTTP_HOST)):
      if(!empty($_SERVER) && isset($_SERVER['HTTP_HOST'])): $HTTP_HOST=$_SERVER['HTTP_HOST'];
      elseif(@getenv('HTTP_HOST')): $HTTP_HOST=getenv('HTTP_HOST');
      endif;
    endif;
    if(!empty($REMOTE_HOST) && strtolower($REMOTE_HOST) !='unknown' ): return $REMOTE_HOST;
    elseif(!empty($HTTP_HOST) && strtolower($HTTP_HOST) !='unknown' ): return $HTTP_HOST;
    endif;
    return false;
  }
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху