知行社区 发表于 2024-9-4 23:58:11

Discuz 3.4 升级到 3.5 后 UC “通信失败”

原来 Discuz 3.4(UTF8) 的时候只要设置应用IP为127.0.0.1就会UC通信成功,5月份升级到 3.5后,一直通信失败:

https://www.dismall.com/data/attachment/forum/202308/08/102001jbbi73ll4bmb117l.jpg
图中 ID 18(原来是13)5月份先升级,8月初又升级的 ID 17。两者共用数据库。


已知:如果应用里面不写IP地址,则应用内通信失败:



如果应用内填写IP地址(127.0.0.1 或者 内网地址 192.168.0.2),则应用内必然通信成功。

https://www.dismall.com/data/attachment/forum/202308/04/120412b2zqhcyr3v3wxy2s.jpg


做过如下排查努力:

UC中先设置好,再粘贴底部文本框的配置信息到应用的 config_ucenter.php检查应用 ID 与 UC 中一致检查 Config_inc.php 的 UC_KEY 一致检查 uc_server/data/cache/apps.php 中的 authkey 与 上面的 UC-KEY 一致。检查 uc_client/data/cache/apps.php 中的应用 appid 与 UC 一致。应用和UC同时设置IP为 127.0.0.1 或者 内网地址 192.168.0.2检查所有的 data 目录及子目录、api/uc.php权限为777,所有者为 www检查服务器环境支持 fsockopen应用中更新缓存、UC中更新缓存在 phpmyadmin 中清空了 common_syscache 整个表,并用 Tools急诊箱更新了缓存。UC中删除应用并重新添加同步了服务器时间用F12获得“通信失败”对应的script链接:http://www.dianbo.org/uc_server/admin.php?m=app&a=ping&inajax=1&url=https%3A%2F%2Fwww.dianbo.org&ip=192.168.0.2&appid=18&random=1388645138&sid=e17euJ1c6tMrwu5ewIeMXXXXXXXXX,地址栏直接访问它结果为:

[*]根据网上教程(https://blog.csdn.net/iastro/article/details/52398813)在 uc_server/control/admin/app.php 中的if($status == '1') {前或后附近插入一个断点:echo "\$url = $url \n \$status = $status\n";die('haha');获取到的 $url 为 https://www.dianbo.org/api/uc.php?code=XXXX ,若直接访问此 $url 则返回值为1,

但直接访问 http://www.dianbo.org/uc_server/admin.php?m=app&a=ping&inajax=1&url=https%3A%2F%2Fwww.dianbo.org&ip=192.168.0.2&appid=18&random=1388645138&sid=e17euJ1c6tMrwu5ewIeMXXXXXXXXX 时,status 却为空:
参考网上教程(https://blog.csdn.net/hubu2006/article/details/22301745),将写入文件 uc2.php,在UC中编辑应用,修改接口文件名称为 uc2.php,仍然通信失败。
网页上说“如果不能通信,则是UC服务端无法通过fsockopen访问客户端,可能是域名解析问题,也可能是填写的IP问题”,但是我的服务端和客户端都在一个服务器上,填写127.0.0.1或192.168.0.2有什么不对呢?




请问我还可以通过哪些方面进行排查呢?



我知道答案 回答被采纳将会获得1 贡献 已有24人回答

可可的可 发表于 2024-9-4 23:58:20

你知道13变成18了,为什么discuz的UC设置里不改成18

霸王别姬 发表于 2024-9-4 23:59:11

有根据应用的新ID进行更改:

https://www.dismall.com/data/attachment/forum/202308/09/095015cie953et4u8utnez.jpg
页: [1]
查看完整版本: Discuz 3.4 升级到 3.5 后 UC “通信失败”