PHPのMySQLI拡張機能を使用してデータベース関連アプリケーションを開発する場合、 MySQLI :: Debug()メソッドを使用してデバッグ情報を出力できます。これは、接続と実行中の問題のトラブルシューティングに非常に役立ちます。ただし、生産環境では、デバッグログをオンにすると、パフォーマンスに影響を与えるだけでなく、機密情報が漏れる可能性もあります。したがって、ログ出力をデバッグする方法を理解することが非常に必要です。
mysqli :: debug()は、 libmysqlclientライブラリのデバッグ機能を制御するために使用される方法です。呼び出された後、 MySQLクライアントライブラリは指定されたデバッグ情報をログファイルに出力します。例えば:
mysqli::debug("d:t:o,/tmp/client.trace");
これにより、デバッグ機能が有効になり、デバッグ情報が/tmp/client.traceファイルに出力されます。
デバッグ出力をオフにするには、2つの重要なポイントがあります。
最も直接的な方法は、mysqli :: debug()メソッドを呼び出さないことです。テストコードで使用する場合は、生産環境を展開するときにコメントまたは削除されていることを確認してください。
公式PHPマニュアルでは、mysqli :: debug( "")が呼び出された場合、デバッグ構成をリセットできると述べています。これはログファイルの内容をクリアしませんが、その後のデバッグ出力を停止できます。
mysqli::debug("");
??ただし、この方法が機能するかどうかは、基礎となるMySQLクライアントライブラリの実装に依存しており、一部のバージョンは引き続きログファイルに書き込まれる場合があります。
libmysqlclientに基づいてmysqli拡張機能を使用している場合は、 mysql_debug環境変数を設定することにより、デバッグ動作を制御することもできます。
; php.ini
mysqlnd.debug = ""
またはPHPを開始するときに設定します:
export MYSQL_DEBUG=""
php yourscript.php
これにより、PHPがデバッグ構成なしで起動することで、デバッグ出力が完全にシャットダウンできます。
<?php
// 何も有効になりません mysqli デバッグ構成
mysqli::debug("");
// データベース接続を作成します
$mysqli = new mysqli("localhost", "username", "password", "database");
// 接続が成功しているかどうかを確認してください
if ($mysqli->connect_error) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
// クエリを実行します
$result = $mysqli->query("SELECT * FROM users");
// 処理結果
while ($row = $result->fetch_assoc()) {
echo "ユーザー名:" . $row["username"] . "<br>";
}
// 接続を閉じます
$mysqli->close();
?>
mysqli :: debug()出力デバッグログを閉じるための鍵は、デバッグ関数の呼び出しや環境変数構成のクリアを避けるためです。デバッグログは、開発環境の問題を無料でトラブルシューティングすることができますが、生産環境では、セキュリティとパフォーマンスの向上のためにすべてのデバッグ出力がシャットダウンされるようにしてください。