読み込み中...

【コピペOK】PHPにおけるエラー表示を7つの手順と10種類のサンプルコードで解説

PHPでエラー表示をする手順とサンプルコードを説明する記事の表紙 PHP
この記事は約10分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPでエラー表示を行うことは、プログラミングの学習過程でも、また実際の開発作業でも非常に重要です。

エラー表示を理解し、うまく活用することで、コードのバグを早期に見つけ出し、効率的なデバッグが可能となります。

この記事を読めば、PHPでエラー表示を行う手順を理解し、実際にそれを行うための具体的なサンプルコードを手に入れることができます。

さらに、エラーハンドリングの注意点やカスタマイズ方法についても学ぶことができます。

●PHPでのエラー表示とは

PHPでは、コード中にエラーや問題が発生した場合、その情報を表示することが可能です。

これはエラー表示(display errors)と呼ばれます。

エラー表示は、プログラムが予期せぬ動作をしたり、完全に停止したりした時に、その原因を特定するための重要なツールとなります。

エラー表示を有効にすると、エラーが発生した場合にエラーメッセージが出力され、エラーの種類や発生箇所を特定することが可能になります。

ただし、そのままではユーザーにとって理解しにくい、または敏感な情報を含む可能性があるため、適切な設定やカスタマイズが必要です。

●エラー表示を有効にする手順

PHPでエラー表示を有効にするには、次の手順を実行します。

  1. php.ini ファイルを開きます。
    このファイルは PHP の設定を管理するもので、大抵はサーバの設定ファイル内やPHPのインストールディレクトリ内に存在します。
  2. php.ini ファイル内で、”display_errors” を探します。
  3. “display_errors” の値を “On” に設定します。
    これにより、エラー表示が有効になります。
  4. 同じく php.ini ファイル内で、”error_reporting” を探し、表示させたいエラーレベルに設定します。
  5. 設定が終わったら、php.ini ファイルを保存し、ウェブサーバを再起動します。

なお、php.ini ファイルを直接編集するのではなく、スクリプト内で ini_set 関数を使用して、動的に設定を変更することも可能です。

ここまでで、エラー表示の概要とその有効化方法について説明しました。

次のセクションでは、エラーレベルについて詳しく解説し、その後、具体的なサンプルコードを用いてエラー表示の活用方法を見ていきましょう。

●エラーレベルの理解

PHPのエラーレベルとは、発生したエラーの重要度を表すものです。

PHPにはいくつかのエラーレベルがあり、それぞれが特定の種類のエラーに対応しています。

これらのエラーレベルは、error_reporting 関数を使って設定することができます。

設定する値により、特定のレベルのエラーのみを表示したり、すべてのエラーを表示したりすることが可能となります。

エラーレベルの理解は、エラー表示の有効な利用には欠かせません。

●サンプルコードの紹介

ここからは、具体的なサンプルコードを用いて、PHPでのエラー表示の設定や活用方法を紹介します。

各コードの詳細な説明とともに、そのコードがどのような動作を行い、どのような結果をもたらすのかを理解しましょう。

○サンプルコード1:基本的なエラー表示の設定

このコードでは、ini_set 関数を使って、基本的なエラー表示を設定しています。

エラー表示は “On”、エラーレベルは E_ALL を設定しています。

これにより、全てのエラーが表示されます。

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>

○サンプルコード2:すべてのエラーを表示する設定

このコードは、すべてのエラーを表示する設定の例です。

error_reporting 関数に E_ALL を設定することで、全てのエラーレベルのエラーが表示されます。

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>

○サンプルコード3:特定のエラーだけ表示する設定

次のコードでは、特定のエラーレベルのエラーだけを表示する設定を行います。

ここでは、警告(E_WARNING)と通知(E_NOTICE)のエラーだけを表示するように設定しています。

<?php
ini_set('display_errors', 'On');
error_reporting(E_WARNING | E_NOTICE);
?>

この設定により、E_WARNING と E_NOTICE のエラーレベルのエラーだけが表示され、それ以外のエラーレベルのエラーは表示されません。

エラーレベルの選択は、開発のステージやデバッグの目的により調整することが可能です。

○サンプルコード4:エラーログをファイルに記録する設定

このコードは、エラーログをファイルに記録する設定を表しています。

ini_set 関数を使って “log_errors” を “On” に設定し、エラーログを出力することを有効化します。

また、 “error_log” にログファイルのパスを設定し、ログがどこに保存されるべきかを指定しています。

<?php
ini_set('log_errors', 'On');
ini_set('error_log', '/path/to/php-error.log');
?>

この設定により、エラーが発生した場合、エラー情報は指定したファイルに記録されます。

これにより、エラー情報を後から確認したり、大量のエラーが発生した場合の対応を可能にします。

○サンプルコード5:ユーザー定義エラーハンドラの作成

次のコードは、ユーザー定義のエラーハンドラを作成する例を表しています。

set_error_handler 関数を使って、自作のエラーハンドラを登録します。

<?php
function custom_error_handler($errno, $errstr, $errfile, $errline)
{
    echo "エラーが発生しました!\n";
    echo "エラーコード: {$errno}\n";
    echo "エラーメッセージ: {$errstr}\n";
    echo "エラーファイル: {$errfile}\n";
    echo "エラーライン: {$errline}\n";
}

set_error_handler('custom_error_handler');
?>

この設定により、エラーが発生した際には自作のエラーハンドラが呼び出され、エラー情報がカスタマイズされた形で出力されます。

○サンプルコード6:エラーハンドラのカスタマイズ

このコードは、エラーハンドラをさらにカスタマイズする例を表しています。

エラーハンドラの中で例外をスローし、エラーを例外として処理することが可能です。

<?php
function custom_error_handler($errno, $errstr, $errfile, $errline)
{
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}

set_error_handler('custom_error_handler');
?>

この設定により、エラーが発生した場合には例外がスローされ、エラーハンドリングが例外処理の仕組みに基づいて行われます。

これにより、エラーハンドリングの柔軟性が高まります。

○サンプルコード7:エラーハンドリングの高度な例

このコードでは、エラーハンドリングのより高度な例を紹介しています。

try-catch ブロックを用いて例外を捕捉し、適切に処理する方法を表します。

<?php
function custom_error_handler($errno, $errstr, $errfile, $errline)
{
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}

set_error_handler('custom_error_handler');

try {
    // 何らかのエラーが発生する可能性のあるコード
    $result = 10 / 0;
} catch (Exception $e) {
    echo "エラーが発生しました: " . $e->getMessage();
}
?>

このコードでは、まず自作のエラーハンドラを設定します。その中で、ErrorException をスローしています。

そして、エラーが発生する可能性のあるコードを try ブロックの中に配置し、エラーが発生した場合には catch ブロックでそれを捕捉します。

これにより、エラーメッセージの表示だけでなく、エラーに対する具体的な対処も可能になります。

○サンプルコード8:例外処理を用いたエラーハンドリング

このコードでは、例外処理を用いてエラーハンドリングを行う例を表しています。

try-catch ブロックを使って、エラーが発生したときに例外を捕捉し、適切な処理を行います。

<?php
try {
    // 何らかのエラーが発生する可能性のあるコード
    $result = 10 / 0;
} catch (Exception $e) {
    echo "エラーが発生しました: " . $e->getMessage();
}
?>

このコードでは、エラーが発生した場合、エラーメッセージを表示するだけでなく、catch ブロック内で具体的な処理を記述することができます。

これにより、エラーが発生したときの振る舞いをより具体的に制御することが可能になります。

○サンプルコード9:エラーメッセージのカスタマイズ

このコードは、エラーメッセージをカスタマイズする方法を表しています。

エラーハンドラを設定し、エラーが発生した際に独自のエラーメッセージを表示します。

<?php
function custom_error_handler($errno, $errstr, $errfile, $errline)
{
    echo "カスタムエラー: [{$errno}] {$errstr} ({$errfile}の{$errline}行目)";
}

set_error_handler('custom_error_handler');
?>

このコードでは、エラーハンドラを設定し、その中でエラーメッセージをカスタマイズしています。

エラーコード、エラーメッセージ、エラーが発生したファイル名と行数を表示します。

○サンプルコード10:本番環境と開発環境でのエラー表示の切り替え

このコードでは、本番環境と開発環境でのエラー表示の切り替え方法を表しています。

環境変数を利用して、エラー表示の設定を切り替えることが可能です。

<?php
if(getenv('APP_ENV') === 'production') {
    ini_set('display_errors', 'Off');
    ini_set('log_errors', 'On');
    ini_set('error_log', '/path/to/php-error.log');
} else {
    ini_set('display_errors', 'On');
}
?>

このコードでは、環境変数 ‘APP_ENV’ の値によってエラー表示の設定を切り替えています。

本番環境ではエラー表示を無効にし、代わりにエラーログを出力します。

開発環境ではエラー表示を有効にします。

これにより、開発中はエラー情報をすぐに確認でき、本番環境ではユーザーにエラー情報を表示せずに適切に処理できます。

●エラー表示のカスタマイズ方法

PHPでは、エラーハンドラをカスタマイズすることでエラー表示を自由に変更できます。

具体的には、エラーハンドラ関数を定義し、その中でエラーメッセージを表示する方法を自由に定義できます。

また、例外を利用したエラーハンドリングも可能で、これによりエラーが発生した際の処理をより柔軟に制御することができます。

●エラーハンドリングの注意点と対策

PHPのエラーハンドリングは強力なツールですが、適切に使用しないと逆に混乱を招く可能性もあります。

たとえば、すべてのエラーメッセージを表示すると、セキュリティ上の問題を引き起こす可能性があります。

このため、本番環境ではエラーメッセージの表示を無効にし、代わりにエラーログに記録するように設定することが推奨されます。

また、エラーハンドラをカスタマイズする際には、エラーメッセージだけでなくエラー発生時の対策もしっかりと考えて設計することが重要です。

まとめ

エラーハンドリングは、PHPでのプログラミングにおいて重要なスキルです。

エラーメッセージの表示から例外処理、エラーログの出力など、様々な方法でエラーを捕捉し、適切に対応することが求められます。

初心者から上級者まで、全てのPHP開発者がエラーハンドリングの基本を理解し、適切に利用することで、より安全で効率的なコードを書くことができるでしょう。