Discuz X2.0 调试应用通信的重要函数
从“通信失败”,找到这个信息的由来:
打开 ./control/admin/app.php 文件,找到 onping 方法,可以看到这个$status 等于1的时候会输出通信成功,除此之外输出通信失败,这样我们就可以设置好断点获取状态信息,顺藤摸瓜找到问题所在,源码如下:
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的时候,也是“通信失败”,找了半天发现是BOM的问题,在这里给大家提个醒,如果遇到类似问题可以用UltraEdit工具另存为文件(保存的时候可以通过配置选择是否添加 bom)