php – get_browser()返回FALSE

前端之家收集整理的这篇文章主要介绍了php – get_browser()返回FALSE前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
– 在 Linux上运行 PHP 5.3.8-

首先,我们已经解决了这个问题,直到函数返回预期值.然而,我仍然有很多未解决的问题,而“解决方案”更像是一个黑客攻击.

我在这个问题上度过了一天的大部分时间,所以当我解释所做的事情时请耐心等待.首先,问题是get_browser()的返回值为FALSE,这不是记录的返回值.这使我假设返回FALSE意味着函数中存在某种错误状态.

经过多次迭代后,测试代码变成了一个简单的var_dump(get_browser($agent,true)).我运行测试时都直接传递用户代理字符串,并且不传递任何参数,例如: var_dump(get_browser()),它们都具有相同的返回值.

尝试/验证的内容,返回值没有变化:

的browscap.ini:

>拥有最新版本,还测试了一些以前的版本

权限:

> bowscap.ini – 初始权限为644,但我已经尝试了644-777的所有内容
>包含browscap.ini的目录 – 初始权限为755,也尝试了777
>验证PHP可以使用file()等其他函数访问文件和目录

用户代理

>尝试传递手动用户代理字符串
>尝试传递$_SERVER [‘HTTP_USER_AGENT’]
>使用远在陆地的朋友验证了我的用户代理字符串 – get_browser()按预期返回值.

PHP.ini中

> browscap设置指向正确的位置
>再次使用echo count验证(file(ini_get(‘browscap’)));

错误日志

>检查PHP&任何提及’browscap’或任何甚至密切相关的事情的Apache错误日志 – 没有什么不寻常的.

文件结构

这是我怀疑错误来自的地方. browscap.ini位于/ var / PHP /中,它具有如上所述的适当权限.我的想法是,PHP可能无法访问此目录,或者沿着这些行.但是,此目录也是存储会话的位置,因此不太可能.

解决方案”

解决这个问题的原因是将browscap.ini移动到公共Web目录.我很好奇为什么会这样,特别是考虑到无证件的返回值. “解决方案”有效,但不是我认为我会找到的解决方案……

get_browser()是否有特殊的权限要求,或类似的东西? file()可以正常访问目录和文件,但get_browser()不能(大概).在这个问题上,我几乎把头发拉了出来,并希望得到一些解决方案!

谢谢阅读!

实际上,即使没有在手册页上记录,get_browser函数也可以出于多种原因返回FALSE.

至少看一下the underlying source code让我们假设一下.

我建议你看看那里然后告诉我你是否有其他问题.我或许可以回答它们.

猜你在找的PHP相关文章