解决方案 »

  1.   

    这个问题刚好我也遇到了,解决办法如下
    找到:\source\class\discuz\discuz_error.php,并打开
    搜索:show_error($type, $errormsg, $phpmsg = '', $typemsg = '')
    在show_error函数下面,用file_put_contents函数将$errormsg打印到一个txt里面
    public static function show_error($type, $errormsg, $phpmsg = '', $typemsg = '') {
    global $_G;
    file_put_contents(DISCUZ_ROOT.'./appapi/log.txt',$errormsg.PHP_EOL,FILE_APPEND);
    ob_end_clean();
    $gzip = getglobal('gzipcompress');
    ob_start($gzip ? 'ob_gzhandler' : null);
    //后面的就不复制了...}
    缺点就是,discuz的所有sql错误都会记录在里面,当然一般discuz报的sql错误还是很少的
      

  2.   

    首先感谢jam00的回答,但我这个论坛是discuzX2的版本,我在 \source\class\class_error.php中进行了您说的相应修改:
    function show_error($type, $errormsg, $phpmsg = '') {
    global $_G;
    file_put_contents('http://192.168.1.101/bbs/android/log.txt',$errormsg.PHP_EOL,FILE_APPEND);
    //file_put_contents(DISCUZ_ROOT.'./android/log.txt',$errormsg.PHP_EOL,FILE_APPEND); 
    ob_end_clean();
    $gzip = getglobal('gzipcompress');
    ob_start($gzip ? 'ob_gzhandler' : null);运行android发帖后,没有在android文件夹中发现log.txt这个文件。
    我想补充一点:我的post请求是android直接发给应用接口(该接口可以作为2级目录直接访问)的,然后通过sql处理mysql数据库,再返回给android进行页面呈现;没有和原有的discuz X2进行通信。所以在原有的discuz X项目中设置错误日志估计不能捕捉到这种独立接口的错误。因此才想到要在zend studio10.0中调试接口,获取sql语句。
    不管怎样,还是要谢谢jam00的热心解答!
      

  3.   

    若你想和discuz的数据完美结合,并减少开发时间的话,建议你还是用discuz已有的DB类和方法
    我不知道zend 在哪里处理了sql,不过执行sql错误,你可以用mysql_error()获取错误信息,用file_put_contents输出到一个txt里面
      

  4.   

    谢谢大家,尤其谢谢最先提供帮助的jam00,问题已经解决了。通过查看mysql_error,的报错,最后修改了forum_post的一个字段类型。