THINKPHP デバッグ モードと例外処理について話しましょう
次のthinkphp フレームワークチュートリアル コラムでは、THINKPHP デバッグ モードと例外処理を有効にする方法を紹介します。
デバッグ モード
デバッグ モードをオンにするのは非常に簡単です。定数定義コードの行をエントリ ファイルに追加するだけです:
<?php // 开启调试模式 define('APP_DEBUG', true); // 定义应用目录 define('APP_PATH', './Application/'); // 加载框架入口文件 require './ThinkPHP/ThinkPHP.php';
When testing , DEBUG デバッグ モードをオンにします。開発モードでは、キャッシュ ファイルが自動的に生成され、テスト中にキャッシュされたファイルが自動的に呼び出され、エラーが発生します。
開発フェーズが完了し、運用環境にデプロイした後、必要なのは次のことだけです。デバッグ モードをオフにするか、デバッグ モード定義コードを削除して展開モードに切り替えます。
<?php // 关闭调试模式 define('APP_DEBUG', false); // 定义应用目录 define('APP_PATH', './Application/'); // 加载框架入口文件 require './ThinkPHP/ThinkPHP.php';
デバッグ モードの利点は次のとおりです:
- ログをオンにすると、エラー情報とデバッグ情報が詳細に記録され、デバッグが容易になります。
- オフにします。テンプレート キャッシュ、テンプレート 変更はすぐに有効になります;
- SQL 分析を容易にするために SQL ログを記録します;
- フィールド キャッシュをオフにします。データ テーブル フィールドの変更はキャッシュの影響を受けません;
- ファイルの大文字と小文字を厳密にチェックします (Windows プラットフォームであっても)。これは、Linux の導入によって引き起こされる可能性のある隠れた問題を事前に発見するのに役立ちます;
- ページのトレース機能によるデバッグとエラーの発見の向上;
デバッグ モードをオフにすると、エラー発生後に特定のエラー メッセージは表示されません。それでも特定のエラー メッセージを表示したい場合は、次のように設定できます:
'SHOW_ERROR_MSG' => true, // 显示错误信息
例外処理
デバッグ モードでシステムに重大なエラーが発生すると、例外は自動的にスローされます。または、ThinkPHP の組み込み E メソッドを使用して例外を手動でスローすることもできます。
E('新增失败');
例:
E('信息录入错误',25);
例外コード (デフォルトは 0) もサポートできます。 たとえば、TMPL_EXCEPTION_FILE 構成パラメータを設定して、システムのデフォルトの例外テンプレート ファイルを変更します。 :
'TMPL_EXCEPTION_FILE' => APP_PATH.'/Public/exception.tpl'
例外テンプレートで使用できる例外変数は次のとおりです:
$e['file']异常文件名 $e['line'] 异常发生的文件行数 $e['message'] 异常信息 $e['trace'] 异常的详细Trace信息
例外がスローされた後、通常、特定のエラー メッセージが表示されます。特定のエラー メッセージを参照し、エラーを閉じるように設定できます。情報を表示し、統合エラー メッセージを設定します。例:
'SHOW_ERROR_MSG' => false, 'ERROR_MESSAGE' => '发生错误
すべての例外とエラーを指すように ERROR_PAGE パラメータを構成します。統合されたページに統合され、ユーザーに異常な情報が表示されるのを防ぎます。通常は展開モードで使用されます。 ERROR_PAGE パラメータは、完全な URL アドレスである必要があります。例:
'ERROR_PAGE' =>'/Public/error.html'
現在のドメイン名にない場合は、ドメイン名を指定することもできます:
'ERROR_PAGE' =>'http://www.myDomain.com/Public/error.html'
ERROR_PAGE が指すページでは、テンプレート変数の例外を使用できなくなります。
ロギング
デフォルトでは、ロギングはデバッグ モードでのみ記録されます。デプロイメント モードでロギングを有効にするには、構成で LOG_RECORD
パラメータを有効にする必要があります。アプリケーション構成ファイルに記録する必要があるログ レベルを構成できます。例:
'LOG_RECORD' => true, // 开启日志记录 'LOG_LEVEL' =>'EMERG,ALERT,CRIT,ERR', // 只记录EMERG ALERT CRIT ERR 错误
ログ レベル
ThinkPHP は、次のようなレベルに従ってシステム ログを分類します。
- ##EMERG
- 重大なエラー、システムクラッシュおよび使用不能の原因 #ALERT 注意すべきエラー、すぐに修正する必要があるエラー
- CRIT クリティカル値エラー、クリティカル値を超えるエラー
- ERR 一般エラー
- WARN 警告エラー、警告が必要なエラー
- NOTICE 通知、プログラムは実行できるがまだ完全ではないというエラー
- #INFO 情報、プログラム出力情報
- DEBUG デバッグ、デバッグ情報に使用されます
- SQL SQL ステートメント、このレベルはデバッグ モードがオンになっている場合にのみ有効です
- 記録方法 ログ記録方法はデフォルトでファイル モードですが、ドライバーを介してより多くの記録方法をサポートするように拡張できます。
記録方法は、LOG_TYPE パラメータによって構成されます。例:
'LOG_TYPE' => 'File', // 日志记录类型 默认为文件方式
Library/Think/Log にあります。 /Driver/File.class .php
。通常、システムのログは自動で行われるため、手動記録は必要ありません。ただし、場合によっては、ログ情報を手動で記録する必要もあります。Log クラスには 3 つのメソッドがあります。ログ記録用。
手動記録
#メソッド
##Log::record() | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Log::save() | メモリに保存されているログ情報を書き込みます(指定された記録方法を使用) | |||||||||||||||||||||||
Log::write() | ログ メッセージをリアルタイムで書き込む | |||||||||||||||||||||||
由于系统在请求结束后会自动调用Log::save方法,所以通常,你只需要调用Log::record记录日志信息即可。 默认记录的日志级别是ERR,也可以指定日志级别: Think\Log::record('测试日志信息,这是警告级别','WARN'); ログイン後にコピー record方法只会记录当前配置允许记录的日志级别的信息,如果应用配置为: 'LOG_LEVEL' =>'EMERG,ALERT,CRIT,ERR', // 只记录EMERG ALERT CRIT ERR 错误 ログイン後にコピー 那么上面的record方法记录的日志信息会被直接过滤,或者你可以强制记录: Think\Log::record('测试日志信息,这是警告级别','WARN',true); ログイン後にコピー 采用record方法记录的日志信息不是实时保存的,如果需要实时记录的话,可以采用write方法,例如: Think\Log::write('测试日志信息,这是警告级别,并且实时写入','WARN'); ログイン後にコピー write方法写入日志的时候 不受配置的允许日志级别影响,可以实时写入任意级别的日志信息。 页面trace
要开启页面Trace功能,需要在项目配置文件中设置: // 显示页面Trace信息 'SHOW_PAGE_TRACE' =>true, ログイン後にコピー 该参数默认为关闭,开启后并且你的页面有模板输出的话,页面右下角会显示ThinkPHP的LOGO: 我们看到的LOGO后面的数字就是当前页面的执行时间(单位是秒) 点击该图标后,会展开详细的页面Trace信息,如图: 页面Trace框架有6个选项卡,分别是基本、文件、流程、错误、SQL和调试,点击不同的选项卡会切换到不同的Trace信息窗口。
页面Trace的选项卡是可以定制和扩展的,默认的配置为: 'TRACE_PAGE_TABS'=>array( 'base'=>'基本', 'file'=>'文件', 'think'=>'流程', 'error'=>'错误', 'sql'=>'SQL', 'debug'=>'调试' ) ログイン後にコピー 把刚才的用户信息调试输出到用户选项卡,trace方法的用法如下: trace($user,'用户信息','user'); ログイン後にコピー 保存这些trace信息,我们可以配置 'PAGE_TRACE_SAVE'=>true ログイン後にコピー 如果不希望保存所有的选项卡的信息,可以设置需要保存的选项卡,例如: 'PAGE_TRACE_SAVE' => array('base','file','sql'); ログイン後にコピー Trace方法页面Trace只能用于有页面输出的情况,但是trace方法可以用在任何情况,而且trace方法可以用于AJAX等操作。 Trace方法的格式: trace('变量','标签','级别','是否记录日志') ログイン後にコピー 例如: $info = '测试信息'; trace($info,'提示'); ログイン後にコピー 如果希望把变量调试输出到页面Trace的某个选项卡里面,可以使用: trace($info,'提示','user'); ログイン後にコピー 如果是输出到ERR选项卡,并且开启 trace($info,'错误','ERR'); ログイン後にコピー 会抛出异常。 有三种情况下,trace方法会记录日志:
断点调试凭借强大的页面Trace信息功能支持,ThinkPHP可以支持断点调试功能。 我们只需要在不同的位置对某个变量进行trace输出即可,例如: $blog = D("Blog"); $vo = $blog->create(); trace($vo,'create vo'); $vo = $blog->find(); trace($vo,'find vo'); ログイン後にコピー 变量调试输出某个变量是开发过程中经常会用到的调试方法 用法: dump($var, $echo=true, $label=null, $strict=true) ログイン後にコピー 相关参数的使用如下:
如果echo参数为false 则返回要输出的字符串 使用示例: $Blog = D("Blog"); $blog = $Blog->find(3); dump($blog); ログイン後にコピー 性能调试G方法可以很方便的获取某个区间的运行时间和内存占用情况。 例如: G('begin'); // ...其他代码段 G('end'); // ...也许这里还有其他代码 // 进行统计区间 echo G('begin','end').'s'; ログイン後にコピー G('begin','end') 表示统计begin位置到end位置的执行时间(单位是秒),begin必须是一个已经标记过的位置,如果这个时候end位置还没被标记过,则会自动把当前位置标记为end标签,输出的结果类似于: 默认的统计精度是小数点后4位,如果觉得这个统计精度不够,还可以设置例如: G('begin','end',6).'s'; ログイン後にコピー 可能的输出会变成: 如果你的环境支持内存占用统计的话,还可以使用G方法进行区间内存开销统计(单位为kb),例如: echo G('begin','end','m').'kb'; ログイン後にコピー 第三个参数使用m表示进行内存开销统计,输出的结果可能是: 错误调试如果需要我们可以使用E方法输出错误信息并中断执行,例如: //输出错误信息,并中止执行 E($msg); ログイン後にコピー 模型调试调试执行的SQL语句在模型操作中 ,为了更好的查明错误,经常需要查看下最近使用的SQL语句,我们可以用 $User = M("User"); // 实例化User对象 $User->find(1); echo $User->getLastSql(); // 3.2版本中可以使用简化的方法 echo $User->_sql(); ログイン後にコピー 每个模型都使用独立的最后SQL记录,互不干扰,但是可以用空模型的getLastSql方法获取全局的最后SQL记录 调试数据库错误信息在模型操作中,还可以获取数据库的错误信息,例如: $User = M("User"); // 实例化User对象 $result = $User->find(1); if(false === $result){ echo $User->getDbError(); } ログイン後にコピー
|
以上がTHINKPHP デバッグ モードと例外処理について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









