搜尋
首頁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中關閉註解功能

<?phpreturn  [
    &#39;inject&#39; => [
        '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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具