首先,我们已经解决了这个问题,直到函数返回预期值.然而,我仍然有很多未解决的问题,而“解决方案”更像是一个黑客攻击.
我在这个问题上度过了一天的大部分时间,所以当我解释所做的事情时请耐心等待.首先,问题是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()不能(大概).在这个问题上,我几乎把头发拉了出来,并希望得到一些解决方案!
谢谢阅读!
至少看一下the underlying source code让我们假设一下.
我建议你看看那里然后告诉我你是否有其他问题.我或许可以回答它们.