切换到宽版

中国黑防联盟

查看: 265|回复: 10

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

[复制链接]
发表于 2020-9-18 13:12:55 | |阅读模式

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


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


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


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


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

  1. $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';
复制代码

下面增加:

  1. $matches['port'] = !empty($matches['port'])&&$scheme=='https' ? $matches['port'] : 443;
复制代码

然后找到:

  1. if(!$fp = @fsocketopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout)) {
复制代码

在修改为:

  1. if($port=='443'){
  2.                 $temp = 'ssl://';
  3.         }else{
  4.                 $temp = 'http://';
  5.         }
  6.         if(!$fp = @fsocketopen($temp.($ip ? $ip : $host), $port, $errno, $errstr, $timeout)) {
复制代码

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

在function uc_check_avatar中找到

  1. $res = uc_fopen2($url, 500000, ”, ”, TRUE, UC_IP, 20);
复制代码

修改为:

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

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


永远支持中国黑防联盟论坛:www.vcs6.com
发表于 2021-5-9 08:38:47 |
这个确实厉害了,感谢楼主分享
永远支持中国黑防联盟论坛:www.vcs6.com
发表于 2021-5-9 16:50:39 |
这个非常给力  ,感谢楼主
永远支持中国黑防联盟论坛:www.vcs6.com
发表于 2021-5-10 06:27:19 |
感谢分享去试试
永远支持中国黑防联盟论坛:www.vcs6.com
发表于 2021-6-16 10:34:54 |
啥也不说了,楼主就是给力!
永远支持中国黑防联盟论坛:www.vcs6.com
发表于 2021-6-20 03:31:26 |
亲测有效,楼主牛
永远支持中国黑防联盟论坛:www.vcs6.com
发表于 2021-6-25 16:48:02 |
这个必须支持一波,楼主威武
永远支持中国黑防联盟论坛:www.vcs6.com
发表于 2021-7-5 01:31:12 |
谢谢分享,真不错
永远支持中国黑防联盟论坛:www.vcs6.com
发表于 2021-7-17 20:14:28 |
感谢分享,支持黑防联盟
永远支持中国黑防联盟论坛:www.vcs6.com
发表于 2021-7-29 10:37:23 |
啥也不说了,楼主就是给力!
永远支持中国黑防联盟论坛:www.vcs6.com
关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|( 蜀ICP备2020029785号 )

快速回复 返回顶部 返回列表