Discuz与UCenter通信失败的解决方法
2016-09-01 13:55
78 查看
如图:在本地安装discuz后发现通信失败:
审查元素通信失败四个字:
代码:
从上面的testlink右健点击进去的页面如下:
我们来看当前的url地址:
http://www.ucserver.com/admin.php?m=app&a=ping&inajax=1&url=http%3A%2F%2Fwww.mydiscuz.com&ip=127.0.0.1&appid=1&random=1032231015&sid=1b715zSrkN2F%2Bc3pyGJHGoBkkHjweVCgI%2F%2Fqp6hTtFO%2FLwdxQUAlXyrtWpKBfYGknm%2BuHEnWyOaYWQ
m=app 就代表着这个控制器原型是 app,因为是后台的访问,因此对应的就是 ucenter 目录下的 ./control/admin/app.php
a=ping 代表着执行的是控制器原型中的 onping 方法
注:这个如果想刨根问底的同学可以去看入口程序admin.php
好,有向前了一小步,我们打开 ./control/admin/app.php 文件,找到 onping 方法,源码如下:
function onping() {
$ip = getgpc('ip');
$url = getgpc('url');
$appid = intval(getgpc('appid'));
$app = $_ENV['app']->get_app_by_appid($appid);
$status = '';
if($app['extra']['apppath'] && @include $app['extra']['apppath'].'./api/'.$app['apifilename']) {
$uc_note = new uc_note();
$status = $uc_note->test($note['getdata'], $note['postdata']);
} else {
$this->load('note');
$url = $_ENV['note']->get_url_code('test', '', $appid);
$status = $_ENV['app']->test_api($url, $ip);
}
if($status == '1') {
echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/correct.gif\' border=\'0\' class=\'statimg\' \/><span class=\'green\'>'.$this->lang['app_connent_ok'].'</span>";testlink();';
} else {
echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/error.gif\' border=\'0\' class=\'statimg\' \/><span class=\'red\'>'.$this->lang['app_connent_false'].'</span>";testlink();';
}
}
我们可以看到这个$status 等于1的时候会输出通信成功,除此之外输出通信失败。 好,那我们直接输出这个 $status ,看看不等于1的时候他是个什么东东。 在if($status
== '1') 上面打印下$url和$status :
原来是没有/api/uc.php文件的权限,进入目录查看下:
apache没有权限,修改下权限:
chmod g+r+w+x -R api
修改后刷新下,发现通信成功:
查看另外一个应用的错误信息,发现错误如下:
原来是数据库连不上,查看后发现配置文件写错了,改好后通信就成功了。
审查元素通信失败四个字:
代码:
<td width="90"> <div id="status_1"> <img src="images/error.gif" border="0" class="statimg"> <span class="red">通信失败</span> </div> <script id="link_1" testlink="admin.php?m=app&a=ping&inajax=1&url=http%3A%2F%2Fwww.mydiscuz.com&ip=127.0.0.1&appid=1&random=1032231015" src="admin.php?m=app&a=ping&inajax=1&url=http%3A%2F%2Fwww.mydiscuz.com&ip=127.0.0.1&appid=1&random=1032231015&sid=1b715zSrkN2F%2Bc3pyGJHGoBkkHjweVCgI%2F%2Fqp6hTtFO%2FLwdxQUAlXyrtWpKBfYGknm%2BuHEnWyOaYWQ"></script> <script>apps[0] = '1';</script> </td>
从上面的testlink右健点击进去的页面如下:
我们来看当前的url地址:
http://www.ucserver.com/admin.php?m=app&a=ping&inajax=1&url=http%3A%2F%2Fwww.mydiscuz.com&ip=127.0.0.1&appid=1&random=1032231015&sid=1b715zSrkN2F%2Bc3pyGJHGoBkkHjweVCgI%2F%2Fqp6hTtFO%2FLwdxQUAlXyrtWpKBfYGknm%2BuHEnWyOaYWQ
m=app 就代表着这个控制器原型是 app,因为是后台的访问,因此对应的就是 ucenter 目录下的 ./control/admin/app.php
a=ping 代表着执行的是控制器原型中的 onping 方法
注:这个如果想刨根问底的同学可以去看入口程序admin.php
好,有向前了一小步,我们打开 ./control/admin/app.php 文件,找到 onping 方法,源码如下:
function onping() {
$ip = getgpc('ip');
$url = getgpc('url');
$appid = intval(getgpc('appid'));
$app = $_ENV['app']->get_app_by_appid($appid);
$status = '';
if($app['extra']['apppath'] && @include $app['extra']['apppath'].'./api/'.$app['apifilename']) {
$uc_note = new uc_note();
$status = $uc_note->test($note['getdata'], $note['postdata']);
} else {
$this->load('note');
$url = $_ENV['note']->get_url_code('test', '', $appid);
$status = $_ENV['app']->test_api($url, $ip);
}
if($status == '1') {
echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/correct.gif\' border=\'0\' class=\'statimg\' \/><span class=\'green\'>'.$this->lang['app_connent_ok'].'</span>";testlink();';
} else {
echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/error.gif\' border=\'0\' class=\'statimg\' \/><span class=\'red\'>'.$this->lang['app_connent_false'].'</span>";testlink();';
}
}
我们可以看到这个$status 等于1的时候会输出通信成功,除此之外输出通信失败。 好,那我们直接输出这个 $status ,看看不等于1的时候他是个什么东东。 在if($status
== '1') 上面打印下$url和$status :
echo "\$url = $url <br />\n \$status = $status<br />\n";之后保存代码重新去刷新刚才的页面。
原来是没有/api/uc.php文件的权限,进入目录查看下:
apache没有权限,修改下权限:
chmod g+r+w+x -R api
修改后刷新下,发现通信成功:
查看另外一个应用的错误信息,发现错误如下:
原来是数据库连不上,查看后发现配置文件写错了,改好后通信就成功了。
相关文章推荐
- Discuz与UCenter通信失败的解决方法
- discuz中头像上传错误和ucenter连接失败问题的解决方法
- discuz 上传头像失败解决方法
- discuz语言包调用失败导致插件乱码问题解决方法
- UCenter 与 DIscuz 通信失败的解决方法
- 用户'MYCOMPUTER\ASPNET' 登录失败”的解决方法
- 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败的解决方法
- SQL Server安装出错:安装程序配置服务器失败的解决方法 [转]
- 在XP+vs2002下打开解决方案时提示Web访问失败的一个解决方法
- ASP.NET仅配置数据库MSDE出现"用户 ’机器名/ASPNET’ 登录失败 解决方法
- 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败解决方法
- Asp.net连接Oracle 9i失败解决方法
- SQL 2005 Reporting Service 出现:“提供程序加载失败”(Provider Load failure)的解决方法
- mysql的ODBC连接失败的解决方法!
- "用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。"的解决方法.
- McAfee防火墙导致Jmail发邮件失败的解决方法
- 有关“安装程序启动安装引擎失败:不支持此接口”错误的解决方法
- 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败解决方法
- SQL Server 2000启动1069错误(由于登录失败而无法启动服务)解决方法
- 使用SQLDMO中“接口SQLDMO.Namelist 的 QueryInterface 失败”异常的解决方法