zoukankan      html  css  js  c++  java
  • ThinkPHP报Class 'CoreLog' not found竟然是由这个原因导致的

    项目在开发阶段运行的好好的(Debug=true),上线后(Debug=false)其中有一个页面报“对不起,您的页面暂进无法找到!”错误。摸不清头脑,看看了这个页面也没有什么两样,可就是提示这句话,也不知道是哪一步报错了。最后用代码中用全文检索搜索这句话发现:

    ThinkPHPConfconvention.php

      /* 错误设置 */
        'ERROR_MESSAGE'         =>  '对不起,您的页面暂进无法找到!',//错误显示信息,非调试模式有效
        'ERROR_PAGE'            =>  '',    // 错误定向页面
        'SHOW_ERROR_MSG'        =>  false,    // 显示错误信息
        'TRACE_MAX_RECORD'      =>  100,    // 每个级别的错误信息 最大记录数

    由此可见出现此提示是因为这里配置了出错后的提示语,再看到后面的一个配置  'SHOW_ERROR_MSG' => false, // 显示错误信息 这里已配置不显示错误信息,也就是说出任何错误都会提示"ERROR_MESSAGE"配置的内容,因此我们给配置为'SHOW_ERROR_MSG' => true,然后删除runtime里面的内容,再刷新页面,果然看到了错误提示:

    Class 'CoreLog' not found

    这个错误更麻烦,找了半天,首先出错页面没有引用CoreLog,唯独只有这一个页面报错,还是摸不清头脑。最头痛的是,一量把Debug=false或SHOW_PAGE_TRACE=true开启页面调试就不会有此错误,在网上也找不到类似的资料。没办法,一句代码一句代码的扣:

    首先将出错页面的代码全部删除,只留一个Action,访问此Action成功!

    接着再把代码全部恢复访问此Action失败!

    目测其中有一个Action有问题,然后仔细查阅了一下代码,跟其它页面对比对比,找出最有可能出错的一个方法,把这个方法注释掉,再测试,访问成功!

    再恢复方法中的部分代码再测试,访问失败!就这样来回测试,最后定位到其中的一句代码:

    $_result_txt.= self::updateOrderExcel($_child[0], $_child[1], $_child[2],&$users,&$vars);

    这句代码只要存在就报错。但这句代码根本就没执行,再细找最后发现:&$users,&$vars 这2个变量,如果把 & 去掉就好了。加上就不行。猜测的原因可能是这里代码解析出错了,然后调用写日志又失败了。结果就报这个错。

    这里写 & 符号是因为我要传递变量的引用,在方法里赋值,因为返回值只有一个,而我要在方法外得到2个值,只能用引用的方式。

    最后改成另一种写法就好了,在调用的时候不加 & 符号,而在定义的时候加&符号,效果是一样的。

    什么意思呢?举个例子:

    function a($p1,$p2){
        $p2=333;  
        return   $p1+$p2;
    }
    
    a(22,&$p);
    //原本写法是这样的 ,在这里调用完a后$p的值为333,没错,但正因为这样写就出现上述错误。
    最后将写法改为:
    function a($p1,&$p2){
        $p2=333;  
        return   $p1+$p2;
    }
    
    a(22,$p);
    //这样调用完a后$p的值也是333,而解决了上述问题
    至于什么原因,我也不清楚。在Debug=true时两种写法都OK,但Debug=false时第一种写法就会报错!也许第一种写法是PHP新语法吧,目前网上的资料都是第二种写法,我上次无意中发现第一种写法也可行于是就用了第一种写法,没想到会出现这种错误,哎。。。
    致读者:感谢你阅读本文,请随手点击右下角的推荐或分享,谢谢!
  • 相关阅读:
    【TCP】TCP三次握手与四次挥手
    【Spring】@PathVariable 获取带点参数,获取不全
    【异常】Caused by: java.sql.SQLTransientConnectionException: HikariPool-1
    【异常】 FlywayException:Validate failed:Migration checksum mismatch
    Eclipse------启动Server时出现弹窗Server at localhost was unable to start within 45 seconds.
    SpringBoot------集成PageHelper分页功能
    SpringBoot------集成MyBatis
    SpringBoot------thymeleaf的使用
    SpringBoot------全局异常捕获
    SpringBoot------JPA连接数据库
  • 原文地址:https://www.cnblogs.com/yzeng/p/4794596.html
Copyright © 2011-2022 走看看