- 基于Linuxget_browser()返回FALSE
运行PHP 5.3.8开始,我们已经解决了这个问题,其中函数返回的预期值的点。然而,我仍然有很多未解决的问题,而“解决方案”更像是一种黑客攻击。
我已经在这个问题上花了一天的更多时间,所以请耐心等待,因为我解释了所做的事情。首先,问题是get_browser()
的返回值为FALSE
,这不是记录的返回值。这导致我认为FALSE
被返回意味着函数中的某种错误状态。
测试代码经过多次迭代后变成了简单的var_dump(get_browser($agent, true))
。我运行测试时都直接传递用户代理字符串,也没有传递任何参数,例如var_dump(get_browser())
,都具有相同的返回值。
什么受审/验证,在返回值没有变化:
的browscap.ini:
- 拥有最新版本,还测试了几个以前的版本
Permissions:
-
个
bowscap.ini - 初始权限是644,但我已经试过各种含有的browscap.ini 644-777
目录 - 初始权限为755,试了777以及
验证PHP可以访问文件和目录与其他功能,如
file()
用户代理
试图通过手动用户代理字符串
试图通过$ _ SERVER [“HTTP_USER_AGENT”]
验证,在一个遥远的朋友我的用户代理字符串 -
get_browser()
返回值如预期。
php。INI
的browscap设置指向正确的位置
与
echo count(file(ini_get('browscap')));
错误日志
- 经过PHP &阿帕奇再次验证ERR或记录任何提及'browscap'或任何与之密切相关的东西 - 没有什么不寻常的。
文件结构
这是我怀疑是错误的来源。 browscap.ini生活在/var/php/
,如上所述,它具有适当的权限。我的想法是,也许PHP无法访问此目录,或沿着这些线路。但是,这个目录也是存储会话的地方,所以变得不太可能。
“解决方案”
什么解决的问题是移动的browscap.ini到公共网页目录。我很好奇为什么会出现这种情况,尤其是考虑到无证的退货价值。 “解决方案”的作品,但不是我想我会找到的解决方案...
get_browser()
是否有特殊的权限要求,或类似的东西? file()
可以访问目录和文件就好,但get_browser()
不可能(大概)。在这个问题上,我几乎把我的头发拉出来,并且会喜欢一些解决方案!
感谢您的阅读!
你用什么功能?用户代理标题并识别它并不完全可靠。你可能会有更好的运气用javascript测试浏览器的功能并将这些信息发送到服务器。然而,这也不应该是必需的,因为您通常会处理差异100%的客户端。 – dqhendricks
@dqhendricks这是为了维护一个(相当大的)现有的代码库。来自此调用的值在预处理和服务内容中均可使用。我总是乐于接受新的/更好的做事方式,但改变目前状态下的整个系统可能工作太多。 – orourkek
我明白了。那么祝你好运。 – dqhendricks