2013-08-03 1 views
6

В настоящее время я разрабатываю приложение в IGB (In-Game-Browser) для онлайн-MMO. Для стороннего развития браузер отправляет заголовки HTTP в игровой информации, такие как «Местоположения», «Идентификатор товара», «Идентификаторы типов объектов» и т. Д.Есть ли альтернатива apache_request_headers для отображения заголовков HTTP

Это небольшой сценарий, с которым я практиковался. Этот скрипт работает на моем локальном сервере и, как и все, кто опубликовал эту проблему, он не работает на моем веб-сервере. Я пришел к выводу, что это связано с тем, что Apache не устанавливается в качестве модуля. Я говорил с моим провайдером хостинга. Они сказали, что они не могут мне ничего сказать, кроме как найти альтернативу «apache_request_headers». Я просмотрел все ранее размещенные выпуски этой темы на этом сайте, и я не могу понять, как все это сочетается. Как использовать примеры здесь для достижения моего конечного результата. Как это [вопрос]: Call to undefined function apache_request_headers()

Мой код:

<?php 
$headers = apache_request_headers(); 

foreach ($headers as $header => $value) { 
    echo "$header: $value <br />\n"; 
} 
?> 

Моя ошибка:

Fatal error: Call to undefined function apache_request_headers() in /home/ncgotggb/public_html/ezalternatives.com/index.php on line 2 

Я учусь, как я иду в этом году, и это был самоучкой и в быстром темпе поэтому я все еще новичок в этих концепциях. На данный момент у меня нет выбора, я сильно заинтересован и должен его закончить. При отображении вашего ответа Было бы очень признательно, если вы продемонстрировали свое решение в полной форме.

+0

http://stackoverflow.com/a/27957883/919216 –

ответ

8

Это звучит как локальный сервер работает под управлением Apache, и ваш удаленный сервер не является, так как эта функция работает только с Apache (если сервер не работает PHP 5.4.0, то он также работает под FastCGI.

On на странице руководства PHP для этой функции один из комментаторов включил функцию замены, которая будет объявлена ​​только в том случае, если встроенный не существует. Я не тестировал это, но я видел ту же самую функцию, опубликованную в другом месте.

if(!function_exists('apache_request_headers')) { 
    function apache_request_headers() { 
     $arh = array(); 
     $rx_http = '/\AHTTP_/'; 

     foreach($_SERVER as $key => $val) { 
      if(preg_match($rx_http, $key)) { 
       $arh_key = preg_replace($rx_http, '', $key); 
       $rx_matches = array(); 
      // do some nasty string manipulations to restore the original letter case 
      // this should work in most cases 
       $rx_matches = explode('_', $arh_key); 

       if(count($rx_matches) > 0 and strlen($arh_key) > 2) { 
        foreach($rx_matches as $ak_key => $ak_val) { 
         $rx_matches[$ak_key] = ucfirst($ak_val); 
        } 

        $arh_key = implode('-', $rx_matches); 
       } 

       $arh[$arh_key] = $val; 
      } 
     } 

     return($arh); 
    } 
} 
0

я обнаружил, что мой сайт в ISP Config был установлен, чтобы иметь PHP как «Fast-CGI» - изменение этого к основным вещам «MOD-PHP» красиво ,

+1

Обратите внимание, что [apache_request_headers()] (http://php.net/manual/en/function.apache-request-headers.php) доступно в FastCGI с PHP 5.4.0 – Benjamin