discuz 3.4 https协议下强制上传头像无法使用(一直提示需要上传头像)的解决办法

2018-07-28 4105 0条评论

discuz已经日落西山了,但是很多老的战在用,没办法,只能自己解决问题。


本次问题是:开启了强制头像上传,即便上传了头像,依旧说没有权限发表,请上传头像。


主要原因在于和uc_server的通讯,在uc_server里面显示通讯成功,但这并不一定准确(里面原因非常复杂),而且我enable了https,所以原因更复杂了。


首先,先做uc的https更新:解决discuz上HTTPS后UCENTER出现通讯失败


然后问题就出在了头像获取上,在uc_client/client.php中,找到

$path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';

下面增加:

$matches['port'] = !empty($matches['port'])&&$scheme=='https' ? $matches['port'] : 443;

然后找到:

if(!$fp = @fsocketopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout)) {

在修改为:

           if($port=='443'){
                $temp = 'ssl://';
        }else{
                $temp = 'http://';
        }
        if(!$fp = @fsocketopen($temp.($ip ? $ip : $host), $port, $errno, $errstr, $timeout)) {

至此应该修复了该问题了,如果还没修复,尝试以下方法:

在function uc_check_avatar中找到

$res = uc_fopen2($url, 500000, ”, ”, TRUE, UC_IP, 20);

修改为:

$res = trim(uc_fopen2(UC_API."/avatar.php?uid=$uid&check_file_exists=1"));

原本的call很不稳定,有时候返回不出1,新的这个直接打开url返回数值。

文章版权及转载声明

本文作者:符文浩 网址:http://blog.fuwenhao.com/post/132.html 发布于 2018-07-28
文章转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:

评论列表 (暂无评论,4105人围观)参与讨论

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码