Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

UCenter后台备份出现“无法访问到该应用的备份接口”问题分析及处理

[复制链接]
vinsonwang 发表于 2011-6-29 17:25:05 | 显示全部楼层 |阅读模式
本帖最后由 vinsonwang 于 2011-6-29 18:14 编辑

UCenter 进行备份时,经常会遇到这个问题:
备份提示:无法访问到该应用的备份接口,请拷贝 UCenter  根目录下 api/dbbak.php 到该应用的 api 目录下。
下面就分析一下在UCenter后台备份的流程。不太理解代码的朋友,可以跟着步骤看一看。
当我们点击提交的时候,URL链接为uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=backup_110629_W1hDIc,
admin.php脚本中的代码:
  1. if($app['type'] == 'DISCUZX') {
复制代码
告诉我们,下一步执行的脚本为control目录下的admin/db.php,a=operate,则调用db.php脚本里的onoperate()函数。这个onoperate()函数就是备份的函数。
下面我们来看看onoperate()函数里有一小句代码:db_back_api_url_invalid 这句话我们可以在message.lang.php语言包里找到,它就是文字“无法访问到该应用的备份接口,请拷贝 UCenter  根目录下 api/dbbak.php 到该应用的 api 目录下”。
那么,在db_back_api_url_invalid 这句话出现之前,执行了什么,或者说是什么条件下,才报错了呢?我们看到它是出现在if(empty($res))后面,也就是说$res为空的时候,就出现错误了。我们再继续看$res这个变量哪里来的。
  1. $res = $_ENV['misc']->dfopen2($url, 0, '', '', 1, $app['ip'], 20, TRUE);
复制代码
$res 也就是 $_ENV['misc']->dfopen2($url, 0, '', '', 1, $app['ip'], 20, TRUE)执行后的结果, $_ENV['misc']->dfopen2的意思是执行misc.php文件中的dfopen2这个函数,而dfopen2有调用dfopen函数,我们看看misc.php脚本中的dfopen函数。
在dfopen函数里有一句:$matches = parse_url($url); 这里的$url即为$app['url'].'/api/db/dbbak.php?apptype='.$app['type'],我们终于见到了api/dbbak.php这个熟悉的字眼儿。我们接着往下看,
  1. $matches = parse_url($url);
  2.                 $host = $matches['host'];
  3.                 $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';
  4.                 $port = !empty($matches['port']) ? $matches['port'] : 80;
复制代码
首先是对URL进行parse_url分解并赋值给matches 数组,包括主机名,路径,方法等。再下一步就是对fsockopen的结果做出判断,如果失败,则返回一个'' ,即“空“。为空,则上一步的$res也就空,所以我们就看到了报错。那么,为什么fsockopen或
pfsockopen失败了呢,第一种解释,那个url根本不存在,这样当然会报错,按照提示我们把文件放过去就可以了,还有一种可能,就是安装端口非80端口,那这时就要这么操作:
找到model/misc.php
把其中的
$out .= "Host: $host\r\n";
改成$out .= "Host: $host: $port\r\n";

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
64243354 发表于 2011-6-29 21:23:53 | 显示全部楼层
王老大的帖也沒人回复一定要回复下了
回复

使用道具 举报

 楼主| vinsonwang 发表于 2011-6-30 08:54:27 | 显示全部楼层
64243354 发表于 2011-6-29 21:23
王老大的帖也沒人回复一定要回复下了

小6?
回复

使用道具 举报

pcyi 发表于 2011-6-30 12:02:21 | 显示全部楼层
支持!
回复

使用道具 举报

64243354 发表于 2011-6-30 12:36:36 | 显示全部楼层
vinsonwang 发表于 2011-6-30 08:54
小6?

是啊 王大哥知道了 呵呵~
回复

使用道具 举报

ARCHY` 发表于 2011-7-1 01:04:41 | 显示全部楼层
来学习下了
回复

使用道具 举报

ssy988 发表于 2011-7-3 23:34:28 | 显示全部楼层
fsockopen函数被禁用,是不是导致UCenter后台不能备份的原因?有什么解决的办法吗?
回复

使用道具 举报

pqml 发表于 2011-7-9 12:30:05 | 显示全部楼层
ssy988 发表于 2011-7-3 23:34
fsockopen函数被禁用,是不是导致UCenter后台不能备份的原因?有什么解决的办法吗?

我所在的服务器最近关闭了fsockopen函数 ,结果我也通信失败了
回复

使用道具 举报

飞天菜鸟 发表于 2011-8-23 19:46:33 | 显示全部楼层
vinsonwang 发表于 2011-6-30 08:54
小6?

根据您的操作方法操作后,仍然不行…………
回复

使用道具 举报

 楼主| vinsonwang 发表于 2011-8-24 09:25:37 | 显示全部楼层
飞天菜鸟 发表于 2011-8-23 19:46
根据您的操作方法操作后,仍然不行…………

你现在通信情况怎么样?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-4-20 10:00 , Processed in 0.627349 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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