搜索
首页php框架ThinkPHP处理thinkphp6关闭调试模式(APP_DEBUG=false)报错问题

下面由thinkphp框架教程栏目给大家介绍thinkphp6 关闭调试模式(APP_DEBUG=false)报错处理,希望对需要的朋友有所帮助!

引言


 phper们大家好,作为一个09年接触PHP、12年起用TP框架、16年后没有完整写过代码的伪工程师,写这个LOG的时候心里真的是五味杂陈、唏嘘不已,自己浪费了大好时光的同时并没有为PHP或TP的进步作出一丁点的贡献;
 本文的核心目的不是问题本身(因为这个问题不难解决)而是分享一下个人处理类似问题的思路,希望能给需要的人提供一丁点的帮助,能力有限欢迎指正。

问题描述


关闭调试问题:

  • tp6增加.env配置模式,发布正式环境问题出现;
  • 开发及测试环境APP_DEBUG = TRUE 一切正常;
  • 发布正式后设置APP_DEBUG = FALSE 报500错误;

调试模式好处:

  • 调试模式的优势在于:开启日志记录,任何错误信息和调试
  • 息都会详细记录,便于调试;
  • 会详细记录整个执行过程;
  • 模板修改可以即时生效;
  • 通过Trace功能更好的调试和发现错误;
  • 发生异常的时候会显示详细的异常信息;

开启关闭方法

编辑.ENV文件

// 设置开启调试模式
APP_DEBUG = FASLE
// 其它的环境变量设置
// …

解决思路


  • step1 复现问题,最简答方式,在测试环境上关闭调试模式;
APP_DEBUG = falseENV = testing.....
  • step2 开启日志,关闭调试错误将不做打印,所以需要开启php文件错误记录
#编辑php.ini文件,开启log_errors = On
error_log = /data/logs/php7/php_error.log
  • step3 查看问题,查看php_error.log,看问题具体描述是什么
#php error log 错误如下,路径需要换成您自己的,非必要信息略...PHP Fatal error:  Uncaught $YOUR_REAL_PATH\think\exception\ErrorException: Invalid argument supplied for foreach() in vendor/topthink/think-annotation/src/CachedReader.php:99
Stack trace:#0 /$YOUR_REAL_PATH/vendor/topthink/think-annotation/src/CachedReader.php(99): think\initializer\Error->appError(2, 'Invalid argumen...', '...', 99, Array)
  • step4 解决问题,发现问题其实问题已经解决一半了;
既然已经找到错误信息了,那么问题就比较好处理了:

option1 如果着急上线,可以先开启调试模式
option2 如果项目没用用注解可以关掉;
option3 如果1和2都不行,那么久仔细研究下CachedReader.php,看看bug出在哪

解决方案

方案1 应急解决,线上环境开启调试模式

APP_DEBUG = trueENV = live

方案2 短期解决,在config/annotation.php中关闭注解功能

e3fa5384b17edd13525c70273ec9212e [
        'enable'     => false,
        'namespaces' => [],
    ],
    'route'  => [
        'enable'      => false,
        'controllers' => [],
    ],
    'ignore' => [],];

方案3 长期解决,查看CachedReader.php代码为什么报错?

# 第8行引入错误
 use think\Cache;
 更改为========================>
 use think\cache\Driver;
 # 第143行 fetchFromCache 方法错误
  private function fetchFromCache($cacheKey, ReflectionClass $class)
   {
       if (($data = $this->cache->get($cacheKey)) !== false) {
           if (!$this->debug || $this->isCacheFresh($cacheKey, $class)) {
               return $data;
           }
       }
       return false;
   }更改为========================>
   private function fetchFromCache($cacheKey, ReflectionClass $class)
   {
       if ((!$this->debug || $this->isCacheFresh($cacheKey, $class)) && $this->cache->has($cacheKey)) {
           return $this->cache->get($cacheKey, false);
       }
       return false;
   }

方案4 玩美解决,希望大家能够习惯性关注插件的更新和BUG

#解决当前问题的方式命令行更新如下,也可以用IDE更新哦$composer update topthink/think-annotation

问题汇总

1.没有服务器登录权限?
代码层面直接ini_set(“display_errors”,1)
2.负载均衡多台怎么办?
可以绑定hosts方式,将错误定位到一台机器

以上是处理thinkphp6关闭调试模式(APP_DEBUG=false)报错问题的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:csdn。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用