我目前正在为在线MMO开发一个IGB (游戏中浏览器)的应用程序。对于第三方开发,浏览器发送带有游戏信息的HTTP报头,如位置、项ID、项类型ID等。
这是我一直在练习的一个小剧本。这个脚本在我的本地服务器上工作,并且和其他在这个问题上发布的人一样,它在我的web服务器上不起作用。我得出的结论是,这是因为Apache没有作为一个模块安装。我和我的主机提供商谈过了。他们说,除了我需要找到"apache_request_headers“的替代方案之外,他们什么也不能告诉我。我已经在这个网站上查看了所有以前在这个主题上发布的问题,我不知道它是如何整合在一起的。如何用这里的例子来完成我的最终结果。就像这个问题: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今年我一直在学习,这是自学成才的,而且速度很快,所以我对这些概念还不太了解。在这一点上,我没有选择,我是坚定的,需要完成它。在显示您的答案时,如果您以完整的形式展示您的解决方案,将不胜感激。
发布于 2013-08-03 06:42:17
听起来您的本地服务器正在运行Apache,而远程服务器则不运行,因为这个函数只适用于Apache (除非服务器运行PHP5.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 );
}
}发布于 2014-03-03 19:49:46
我发现我在ISP Config中的站点被设置为“快速-CGI”--将其转换为“MOD”,很好地修复了这些问题。
https://stackoverflow.com/questions/18029229
复制相似问题