Fatal error: Uncaught Error: Call to undefined function Think\C() in Library\Think\Think....

公司运营人员反馈有时后台会出现这种状况如下图

 原因是ajax 解析的数据不是json 所以抛出这这个 alert异常信息。因为这种情况是偶现,刷新一小时可能会出现一次。因为是老项目还是thinkphp3.0版本,偶现也不容易定位错误在哪,历史遗留问题,我也没参与这个问题解决方案,后来新来个总监,把这锅甩到了我的身上,绩效给我扣了分,NND。那我就来看一看吧....

经过排查发现,发现是因为TP3抛出了这样一个致命错误。

Fatal error: Call to undefined function Think\C() in /usr/local/nginx/html/byg-web/ThinkPHP/Library/Think/Think.class.php on line 313

问问度娘,说法基本一致。我也就没细细研究,直接暴力删掉runtime文件里的内容。但是问题还会出现。没有从根本上解决问题(度娘也不靠谱啊)。因为报的是没有找打C方法的错误,所以我决定到TP3的初始化执行文件看一看。看看引没引进来。

D:\wamp\www\techhg-byg\ThinkPHP\Library\Think\Think.class.php中发现了这个判断,就马上明白问题所在;

如果if()条件成立,就引入在runtime文件中生成的common~runtime.php编译文件(这个文件的内容就是核心文件编译后的方法,包括C()方法);

 如果不成立引入正常文件,并 重新生成common~runtime.php编译文件;

说道这里,大家应该大概知道问题原因所在了吧;

就是当 程序判断 引common~runtime.php引入失败(或读取缺失)就会抛出

Fatal error: Call to undefined function Think\C() in /usr/local/nginx/html/byg-web/ThinkPHP/Library/Think/Think.class.php on line 313

(至于什么原因引入失败或读取缺失,我也没细细研究);

解决方法一:禁止生成common~runtime.php文件。(百度有很多方法但基本没什么卵用,看看图片3 里面他是如何生成的 if(!APP_DEBUG),大家就知道怎么解决了)

解决方法二:简单暴力 直接走ELSE{}的编码,不要if()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值