php – OpenID登录代码在实时服务器中失败

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – OpenID登录代码在实时服务器中失败脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用最新的 LightOpenID版本实现一个OPEnID登录系统.我正在逐行测试代码提供的示例(我只是在构造函数中用$_SERVER [‘HTTP_HOST’]替换了localhost).

问题是在我的私人网络(Windows Vista上的PHP / 5.3.6)的开发框中一切正常,但在HSP公共网络(CentOS上的PHP / 5.3.3)的生命服务器中验证总是失败.

我已经添加var_dump(),我可以告诉你,代码的两个副本产生完全相同的请求参数并接收完全相同的响应参数(通过GET).只有openid.assoc_handle,openid.sig,openid.response_nonce和openid.return_to有不同的值,我猜这是预期的行为.

但是,我的开发框从OpenID提供程序收到此信息(无论我使用哪一个):

is_valid:true
ns:http://specs.openid.net/auth/2.0

……我的活狐得到了这个:

is_valid:false
ns:http://specs.openid.net/auth/2.0

没有涉及任何非ASCII字符,因此它不能成为编码问题.我的托管服务肯定有问题,但我无法弄清楚是什么.

我需要有关可能原因和故障排除提示的建议.

我已经解决了问题并找到了解决方法. request()方法进行一些自动检测以找出如何建立HTTP连接:
PRotected function request($url,$method='GET',$params=array(),$update_claimed_id=false)
{
    if (function_exists('curl_init')
        && (!in_array('https',stream_get_wrappers()) || !ini_get('safe_mode') && !ini_get('open_basedir'))
    ) {
        return $this->request_curl($url,$method,$params,$update_claimed_id);
    }
    return $this->request_streams($url,$update_claimed_id);
}

在我的开发框中使用CURL但在我的实时框中它使用file_get_contents(),因为检查失败.原因是open_basedir指令不为空.

如果我强制lightopenid使用CURL,一切都运行顺利.

更新#1:LightOpenID在确定卷曲不可用时是正确的.我在日志文件中找到了这个:

至于file_get_contents()版本,我怀疑我在库中发现了一个拼写错误

Index: lightopenid/openid.PHP
===================================================================
--- lightopenid/openid.PHP  (0.60)
+++ lightopenid/openid.PHP  (working copy)
@@ -349,7 +349,7 @@
             $this->headers = $this->parse_header_array($http_response_header,$update_claimed_id);
         }

-        return file_get_contents($url,false,$context);
+        return $data;
     }

     protected function request($url,$update_claimed_id=false)

我已经通知了作者,他确认这是一个错误.我会报告它是否得到修复.

更新#2:2012年6月在master分支中的错误was fixed.它仍然不是稳定版本的一部分,但可以从code repository下载.

脚本宝典总结

以上是脚本宝典为你收集整理的php – OpenID登录代码在实时服务器中失败全部内容,希望文章能够帮你解决php – OpenID登录代码在实时服务器中失败所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。