Jadual Kandungan
关闭调试问题:
调试模式好处:
开启关闭方法
方案1 应急解决,线上环境开启调试模式
方案2 短期解决,在config/annotation.php中关闭注解功能
方案3 长期解决,查看CachedReader.php代码为什么报错?
方案4 玩美解决,希望大家能够习惯性关注插件的更新和BUG
Rumah rangka kerja php ThinkPHP 处理thinkphp6关闭调试模式(APP_DEBUG=false)报错问题

处理thinkphp6关闭调试模式(APP_DEBUG=false)报错问题

Dec 25, 2020 pm 04:09 PM
thinkphp6

下面由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.....
Salin selepas log masuk
  • step2 开启日志,关闭调试错误将不做打印,所以需要开启php文件错误记录
#编辑php.ini文件,开启log_errors = On
error_log = /data/logs/php7/php_error.log
Salin selepas log masuk
  • 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)
Salin selepas log masuk
  • step4 解决问题,发现问题其实问题已经解决一半了;
既然已经找到错误信息了,那么问题就比较好处理了:

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

解决方案

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

APP_DEBUG = trueENV = live
Salin selepas log masuk

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

<?phpreturn [
    &#39;inject&#39; => [
        &#39;enable&#39;     => false,
        &#39;namespaces&#39; => [],
    ],
    &#39;route&#39;  => [
        &#39;enable&#39;      => false,
        &#39;controllers&#39; => [],
    ],
    &#39;ignore&#39; => [],];
Salin selepas log masuk

方案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;
   }
Salin selepas log masuk

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

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

问题汇总

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

Atas ialah kandungan terperinci 处理thinkphp6关闭调试模式(APP_DEBUG=false)报错问题. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara buku berfikir dan thinkpad Apakah perbezaan antara buku berfikir dan thinkpad Mar 06, 2025 pm 02:16 PM

Artikel ini membandingkan Lenovo's ThinkBook dan ThinkPad Laptop Lappt. ThinkPads mengutamakan ketahanan dan prestasi untuk profesional, sementara Thinkbooks menawarkan pilihan yang bergaya dan berpatutan untuk kegunaan seharian. Perbezaan utama terletak pada kualiti membina, p

Cara Mencegah Tutorial Suntikan SQL Cara Mencegah Tutorial Suntikan SQL Mar 06, 2025 pm 02:10 PM

Artikel ini menerangkan bagaimana untuk mencegah suntikan SQL dalam aplikasi ThinkPHP. Ia menekankan menggunakan pertanyaan parameter melalui pembina pertanyaan ThinkPHP, mengelakkan penggabungan SQL langsung, dan melaksanakan pengesahan input & sanitisasi yang mantap. AD

Bagaimana Menangani Kerentanan ThinkPhp? Bagaimana Menangani Kerentanan ThinkPhp? Mar 06, 2025 pm 02:08 PM

Artikel ini membincangkan kelemahan ThinkPHP, menekankan penampalan, pencegahan, dan pemantauan. Ia memperincikan pengendalian kelemahan tertentu melalui kemas kini, patch keselamatan, dan pemulihan kod. Langkah proaktif seperti konfigurasi selamat, input

Cara Memasang Perisian yang Dibangunkan oleh ThinkPhp Cara Memasang Tutorial Cara Memasang Perisian yang Dibangunkan oleh ThinkPhp Cara Memasang Tutorial Mar 06, 2025 pm 02:09 PM

Butiran artikel ini Pemasangan perisian ThinkPHP, meliputi langkah -langkah seperti memuat turun, pengekstrakan, konfigurasi pangkalan data, dan pengesahan kebenaran. Ia menangani keperluan sistem (versi PHP, pelayan web, pangkalan data, sambungan), pemasangan biasa

Cara Memperbaiki Kerentanan ThinkPhp Bagaimana Menangani Kerentanan ThinkPhp Cara Memperbaiki Kerentanan ThinkPhp Bagaimana Menangani Kerentanan ThinkPhp Mar 06, 2025 pm 02:04 PM

Tutorial ini menangani kelemahan berfikir biasa. Ia menekankan kemas kini yang kerap, pengimbas keselamatan (RIPS, Sonarqube, Snyk), semakan kod manual, dan ujian penembusan untuk pengenalpastian dan pemulihan. Langkah pencegahan termasuk selamat

Cara Menggunakan Tutorial ThinkPhp Cara Menggunakan Tutorial ThinkPhp Mar 06, 2025 pm 02:11 PM

Artikel ini memperkenalkan ThinkPhp, kerangka PHP sumber terbuka. IT memperincikan seni bina, ciri-ciri (penghalaan, interaksi pangkalan data), kelebihan (perkembangan pesat, kemudahan penggunaan), dan kekurangan yang berpotensi (potensi kejuruteraan, commun

Bagaimanakah saya boleh menggunakan ThinkPhp untuk membina aplikasi baris arahan? Bagaimanakah saya boleh menggunakan ThinkPhp untuk membina aplikasi baris arahan? Mar 12, 2025 pm 05:48 PM

Artikel ini menunjukkan aplikasi baris arahan bangunan (CLI) menggunakan keupayaan CLI ThinkPHP. Ia menekankan amalan terbaik seperti reka bentuk modular, suntikan ketergantungan, dan pengendalian ralat yang mantap, sambil menonjolkan perangkap biasa seperti Inu

Langkah terperinci untuk menyambung ke pangkalan data oleh ThinkPhp Langkah terperinci untuk menyambung ke pangkalan data oleh ThinkPhp Mar 06, 2025 pm 02:06 PM

Panduan ini butiran Pangkalan Data Sambungan dalam ThinkPHP, yang memberi tumpuan kepada konfigurasi melalui Database.php. Ia menggunakan PDO dan membolehkan ORM atau interaksi SQL langsung. Panduan ini meliputi masalah penyelesaian masalah kesilapan sambungan biasa, menguruskan pelbagai sambungan, en

See all articles