勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPのエラーメッセージ及びvar_dumpを見やすく表示するライブラリ「Tracy」の利用方法

  PHP

ここのところPHPでの開発時にvar_dumpをツールバー表示する「Kint」及びエラーメッセージ画面をリッチにする「PHP Error」ライブラリを使用しているが、どちらの機能も搭載しており尚且つ更新も活発な「Tracy」というライブラリを見つけた。以下に使用方法をメモ。

 

Tracy

公式サイト

https://tracy.nette.org/en/

リファレンス

https://tracy.nette.org/en/guide

デモページ

https://nette.github.io/tracy/tracy-exception.html

GitHub

https://github.com/nette/tracy

 

インストール

composerを利用する場合

サーバにSSH接続し以下コマンドでインストールする。

composer require tracy/tracy

composerを利用しない場合

こちらのページからtracy.pharをダウンロードして適当なディレクトリにアップロードし、以下で読み込む。

require 'tracy.phar';

尚、今回はこちらの方法でインストールした。

 

利用方法

基本設定

<?php
use Tracy\Debugger;

require 'tracy.phar';

//デバッガーをON(自身の接続IPアドレスを指定)
Debugger::enable('111.222.333.444');

//エラーログの保存場所を絶対パスで指定
Debugger::$logDirectory = __DIR__ . '/log';

//エラーログ設定
Debugger::$logSeverity = E_NOTICE | E_WARNING;

//全てのエラーを表示
#Debugger::$strictMode = true;

//非推奨の通知を除くすべてのエラーを表示
Debugger::$strictMode = E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED;

Tracyは開発モードと本番モードがあり、ざっくりと以下の部分が異なる模様。

  • 開発モード → エラーメッセージを画面上に表示。エラーログは指定しないと出力されない
  • 本番モード → エラーメッセージは画面上に表示しない。エラーログは自動で出力される

開発 or 本番モードは自動検出されるようで「Debugger::enable('111.222.333.444');」部分を自身の接続IPアドレスを指定しないと本番モードとして検出された(デフォルトだとlocalhostのみ開発モードとして検知されるっぽい)。

手動でエラーログを出力

Debugger::log('〇〇エラー発生', Debugger::ERROR);

前述の通り開発モード中にエラーログを出力させたい場合は上記のように記述する必要がある。

var_dumpをツールバーに出力

$arr = [10, 20.2, true, null, 'hello'];

//ツールバーにdump
bdump($arr);

var_dump関連の詳細についてはこちらのページを参照。

処理時間計測をツールバーに出力

Debugger::timer();

sleep(1);

$elapsed = Debugger::timer();
bdump($elapsed); //float(1.0000970363616943)

 

所感

更新頻度が割と活発

「Kint」及び「PHP Error」ライブラリも特に悪くないんだけど後者の「PHP Error」の方が2012年に作成後アップデート無しだったため、今後いつ使えなくなるか分からないという不安があった。

「Tracy」は最終更新が2023/9/25となっており、更新頻度も割と活発でその辺りは安心できそう。

多機能

今回は最低限必要そうな機能のみ書いたが、リファレンスによるとエラーログをメールで送信できたり、プラグイン機能があったりと多機能なライブラリとなる。

 - PHP

  関連記事

PHPでExcelシートを出力する方法(PhpSpreadsheet)

PHPでエクセルシートを出力させたい。以前はPHPExcelを利用していたが現在 ...

HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)

HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...

PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方

PHPでvar_dumpを見やすくするためにdBugライブラリを利用しているが、 ...

PHPで配列を確認する際にvar_dumpよりも見やすくなるdBug.phpの利用方法

PHPで配列を確認する際、大抵var_dumpで出力させているがこれが見づらい。 ...

PHPでシンプルな英数字のCAPTCHAを「Gregwar / Captcha」ライブラリで実装する方法

PHPでシンプルなランダム英数字のCAPTCHAを実装したい。「Gregwar ...