Apache PHP HTTP_USER_AGENT和get_browser返回不正确的值

时间:2012-06-15 10:53:42

标签: php apache browscap

我正在为我的HSC软件设计和开发主要项目开发一个公司网站。我有一段代码来检查MySQL数据库中是否支持用户的浏览器,如果没有,则向他们显示警告并记录他们的浏览器类型。 这段代码使用get_browser函数(几乎)完美地工作,显示一条看起来像这样的消息:

  

我们检测到您正在使用Internet Explorer查看此站点。我们还没有测试过   这个浏览器并不能保证完全支持。为了最好的结果我们   推荐谷歌浏览器。

然而,由于httpd.conf中的一些乱码和一些服务器重启,此代码不再有效。它将浏览器视为“”。 (只是一个空字符串) 为了找出问题的根源,我在下面放了一个快速的调试行:

echo $_SERVER['HTTP_USER_AGENT'];

由于某些原因,这会在每个浏览器中返回以下内容:

  

Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 536.5(KHTML,like   Gecko)Chrome / 19.0.1084.56 Safari / 536.5

我会想到这就是问题的原因,有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

再一次,我的问题的解决方案非常具体。 问题出在这里:

我使用WebFaction进行托管,他们有一个应用程序,网站和域设置,这很棒,但太复杂,无法在此完全解释。基本上,我一直在成功运行网站,直到有一天httpd可执行文件随机消失。在与WebFaction的支持团队交谈之后,我决定重建Apache并将其放入新的应用程序中。完成此操作后,我的服务器已修复,并在之后的几周内继续顺利运行。几天前,我决定是时候清除旧的应用程序(它仍处于非活动状态但仍在服务器上)以重新获得一些磁盘空间。我没有意识到的是我的新应用程序中的PHP.ini引用了旧应用程序中的browscap.ini。一旦删除它就再也找不到了,返回错误。当我去PHP.ini检查我是否有正确的设置时,我认识到引用我的旧应用程序的部分,因为我已经习惯了它,并且看到最后的位仍然是正确的,所以假设问题不可能在那里。

TL; DR,只要没有其他人搞砸了迁移,他们就不会有这个问题。