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

Тема в разделе "PHP", создана пользователем phillip, 25 май 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    переехал на новый хост. на старом у меня была доступна суперглобальная $_SERVER['SCRIPT_URI'] а на новом ее нет. а она уже задействована во многих скриптах.
    Как-то может в пхп.ини прописывается чтоб она была или как
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    похоже что php на сервере работает в режиме cgi и скрипт будет cgi то есть не php значит пустое значение, но можно эмулировать
    PHP:
    if (empty($_SERVER['SCRIPT_URI'])) {
       
    $_SERVER['SCRIPT_URI'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI'];
    }
     
    phillip нравится это.
  3. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    а как узнать, в режиме cgi или нет у меня пхп? и каким образом это влияет на другие мои скрипты? может ли от этого еще где-то трабла вылезти?
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    функция phpinfo(); показывает всю информацию, и там есть строка Server API в которой указан режим. А проблем обычно минимум, пропадут какие-то системные переменные, вобщем ничего такого чего нельзя обойти
     
    phillip нравится это.
  5. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Если точнее все переменные можно посмотреть так phpinfo(32);
     
    phillip нравится это.
  6. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Server API Apache 2.0 Handler
    значит не cgi. Тогда в чем может быть дело?
    кстати счас выяснил что $_SERVER['SCRIPT_URI'] не идентично 'http://'.$_SERVER['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI']
    во втором случае еще $_GET переменные подставляются. допустим
    'http://'.$_SERVER['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI'] == http://domen.ru/scr/?info=yes
    в то время как
    $_SERVER['SCRIPT_URI'] == http://domen.ru/scr/
     
  7. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    $_SERVER['REQUEST_URI']
    или
    $_SERVER['SCRIPT_NAME']
    Не подойдут?
     
  8. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    может что из этого поможет

    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;
      }
     
    phillip нравится это.
Статус темы:
Закрыта.