Php 是否有apache_请求_头用于显示HTTP头

Php 是否有apache_请求_头用于显示HTTP头,php,apache,http-headers,Php,Apache,Http Headers,我目前正在为在线MMO开发一款IGB(游戏浏览器)应用程序。对于第三方开发,浏览器发送带有游戏内信息的HTTP头,如位置、项目ID、项目类型ID等 这是我用来练习的小剧本。这个脚本可以在我的本地服务器上运行,就像其他发布这个问题的人一样,它不能在我的web服务器上运行。我得出的结论是,这是由于Apache没有作为模块安装。我和我的主机提供商谈过。他们说除了我需要找到“apache_请求_头”的替代品之外,他们不能告诉我任何事情。我已经浏览了这个网站上以前发布的关于这个主题的所有问题,我看不出它们

我目前正在为在线MMO开发一款IGB(游戏浏览器)应用程序。对于第三方开发,浏览器发送带有游戏内信息的HTTP头,如位置、项目ID、项目类型ID等

这是我用来练习的小剧本。这个脚本可以在我的本地服务器上运行,就像其他发布这个问题的人一样,它不能在我的web服务器上运行。我得出的结论是,这是由于Apache没有作为模块安装。我和我的主机提供商谈过。他们说除了我需要找到“apache_请求_头”的替代品之外,他们不能告诉我任何事情。我已经浏览了这个网站上以前发布的关于这个主题的所有问题,我看不出它们是如何结合在一起的。如何使用这里的示例来完成我的最终结果。像这个[问题]:

我的代码:

<?php
$headers = apache_request_headers();

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

今年我一直在边走边学习,而且是自学的,而且速度很快,所以我对很多这些概念还是新手。在这一点上,虽然我别无选择,但我已经下了很大的决心,需要完成它。在显示您的答案时,如果您以完整的形式展示您的解决方案,我们将不胜感激。

听起来您的本地服务器运行的是Apache,而您的远程服务器运行的是Apache,因为此函数仅适用于Apache(除非服务器运行的是PHP 5.4.0,否则它也适用于FastCGI)

在这个函数的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 );
    }
}

我发现我在ISP配置中的站点将PHP设置为“Fast CGI”-将其更改为“MOD-PHP”很好地解决了问题。

注意,从PHP 5.4.0开始,FastCGI就提供了这一功能
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 );
    }
}