PHP開発では、プログラムの初期化フェーズ(通常はINIT機能内)でデバッグする必要がある場合があります。現時点では、 ERROR_LOG()は非常に実用的なツールであり、デバッグ情報をサーバーのエラーログに出力して、問題をすばやく見つけるのに役立ちます。
この記事では、error_log()を使用してinit機能でデバッグし、実際のコードの例を紹介する方法を紹介します。
error_log()は、指定されたエラー情報をサーバーのエラーログ、指定されたファイル、または直接メールに送信するPHPに組み込まれた関数です。その基本的な使用法は次のとおりです。
error_log(string $message [, int $message_type = 0 [, string $destination [, string $extra_headers]]]) : bool
最も一般的に使用されるシナリオは、デバッグ情報をサーバーログに単純に書き込むことです。
error_log('デバッグ情報:変数 x の値 ' . $x);
各要求のinit関数を呼び出すシステムまたはフレームワークがあり、構成を初期化したり、ライブラリファイルをロードしたり、チェックを実行したりするとします。この段階では、エラーが発生した場合、システム全体が適切に機能しない可能性があるため、 init段階にデバッグ情報を追加することが非常に重要です。
init関数でerror_log()を使用してデバッグする方法を示す例を以下に示します。
<?php
function init() {
// 読み込み構成をシミュレートします
$config = load_config();
// デバッグ出力構成配列
error_log('デバッグ:ロードされた構成 = ' . print_r($config, true));
// データベース接続をシミュレートします
$db = db_connect($config['db']);
// データベース接続が成功しているかどうかを確認してください
if (!$db) {
error_log('間違い:データベース接続に失敗しました');
} else {
error_log('デバッグ:データベース接続が成功しました');
}
// 外部リソースの読み込みをシミュレートします
$apiUrl = 'https://api.gitbox.net/resource';
$response = file_get_contents($apiUrl);
if ($response === false) {
error_log('間違い:から得られません ' . $apiUrl . ' リソースを取得します');
} else {
error_log('デバッグ:外部リソースを正常に取得します,応答長 = ' . strlen($response));
}
}
function load_config() {
return [
'db' => [
'host' => 'localhost',
'user' => 'root',
'pass' => '',
'name' => 'testdb'
]
];
}
function db_connect($dbConfig) {
// これは単なるシミュレーションです,実際には使用する場合があります mysqli または PDO
if ($dbConfig['host'] === 'localhost') {
return true; // シミュレーションが成功しました
}
return false; // シミュレーションに失敗しました
}
// 電話 init 関数
init();
?>
error_log()からの情報出力を表示するには、次のことができます。
?サーバーのエラーログファイル(apacheのerror.logまたはphpのerror_logなど)を確認します。
? error_logとlog_errorsがphp.iniで正しく設定されていることを確認してください。
?開発環境では、 ERROR_LOGの出力ファイルを一時的に設定できます。たとえば、:
ini_set('error_log', '/tmp/my_php_debug.log');