開発環境・コマンドライン

PHPエラーチェックの基本と対処法を解説

PHPは柔軟なプログラミング言語ですが、エラー発生時に対処できる仕組みが充実しています。

この記事では、PHPのエラーチェックに着目し、基本的な確認方法や注意点、シンタックスエラーや実行時エラーを早期に発見するための手法を解説します。

これにより、コーディング時のトラブルシューティングがスムーズになり、開発作業の効率化に繋がるヒントをご紹介します。

エラーの種類

シンタックスエラー

シンタックスエラーは、コードの構文が正しくない場合に発生します。

文法ミスやカッコ、セミコロンの書き忘れなど、ソースコードの記述ミスが原因です。

以下はシンタックスエラーの例です。

<?php
// セミコロンの記述漏れによるシンタックスエラー例
echo "こんにちは世界" // セミコロンが抜けています
?>
Parse error: syntax error, unexpected end of file in /path/to/script.php on line X

実行時エラー

実行時エラーは、コードが実際に実行された際に発生するエラーです。

未定義の関数呼び出しや、存在しないファイルの読み込みなどが考えられます。

以下は未定義関数を呼び出した場合の例です。

<?php
// 定義されていない関数を呼び出すことで発生する実行時エラー例
nonExistentFunction();
?>
Fatal error: Uncaught Error: Call to undefined function nonExistentFunction() in /path/to/script.php on line Y

警告と通知

警告や通知は、処理自体は継続されるが、コードの不備や注意すべき点がある場合に表示されます。

たとえば、未定義の変数の使用などが該当します。

<?php
// 未定義変数の利用による警告例
echo $undefinedVariable;
?>
Notice: Undefined variable: undefinedVariable in /path/to/script.php on line Z

PHP設定によるエラーチェック

php.iniでの基本設定

error_reportingの調整

php.iniファイル内のerror_reportingディレクティブは、PHPがどのレベルのエラーを検出するかを設定するために使用します。

開発中はすべてのエラーを表示する設定が推奨されます。

; すべてのエラー、警告、通知を表示する設定例
error_reporting = E_ALL

display_errorsの有効化

display_errorsは、エラーを画面上に表示するかどうかを決める設定です。

開発環境ではエラー内容を把握できるように有効化しておくと便利です。

; 開発環境向けのエラー表示を有効にする設定例
display_errors = On

コード内での設定変更

ini_set関数による調整

ini_set関数を利用することで、コード内で動的に設定を変更することができます。

たとえば、特定のスクリプトだけでエラー表示を有効にする場合に利用されます。

<?php
// ini_setを利用してエラー表示を有効にする例
ini_set('display_errors', '1');
// 以降のコード実行中にエラーが画面に出力されます
echo "エラー設定が変更されました";
?>

error_reporting関数の利用

error_reporting関数を使うことで、実行中にエラーチェックのレベルを変更することが可能です。

これにより、状況に応じて柔軟にエラーチェックを行うことができます。

<?php
// error_reporting関数によるエラーチェックレベルを変更する例
error_reporting(E_ALL);
echo "すべてのエラーを検出する設定に変更しました";
?>

ログ出力活用

error_log関数の利用

error_log関数は、カスタムメッセージを任意のログに記録するために使用されます。

エラー発生時に画面表示ではなく、ログファイルに記録することで、運用環境での情報漏洩を防ぐことが可能です。

<?php
// error_log関数の利用例
$message = "エラー発生:不正な入力が検出されました";
// $messageをサーバーのエラーログに記録します
error_log($message);
?>
(画面には出力されません。設定されたログファイルにメッセージが記録されます)

ログファイルの設定

書き込み権限の確認

ログファイルに正しくエラーメッセージを記録するためには、対象ファイルの書き込み権限が適切に設定されている必要があります。

OSの権限設定を確認し、PHPがログファイルに書き込めるようにしてください。

# Linux環境での例(ログファイルへの書き込み権限を設定する)

chmod 644 /var/log/php_errors.log

保存先の管理

php.ini内のerror_logディレクティブを使って、ログファイルの保存先を指定することができます。

適切な保存先を設定することで、ログ管理が容易になります。

; php.iniにおけるログファイルの保存先設定例
error_log = /var/log/php_errors.log

デバッグツールの利用

Xdebugの基本設定

インストール手順

XdebugはPHPのデバッグやプロファイリングを支援するツールです。

インストールはPECLやパッケージマネージャーを利用してください。

以下はPECLを利用したインストール例です。

# Xdebugのインストール例(コマンドライン実行)

sudo pecl install xdebug
Build process completed successfully
Installing '/usr/lib/php/20220829/xdebug.so'

設定方法と確認

Xdebugを有効にするためには、php.iniに以下のような設定を追加する必要があります。

設定が正しく反映されたかをphp -vコマンドなどで確認してください。

; php.iniに追加するXdebugの設定例
zend_extension="xdebug.so"
xdebug.mode=debug
xdebug.start_with_request=yes
PHP Xdebug enabled

IDEのデバッグ機能

ブレークポイントの設定

IDEを利用してPHPのデバッグを行う際には、コード中にブレークポイントを設定します。

以下はシンプルなコード例です。

実行前にIDE上でブレークポイントを設定してください。

<?php
// 変数を定義
$number = 5;
// ブレークポイントを設定して、以降の処理をステップ実行します
$result = $number * 2;
echo $result; // 計算結果を出力
?>
10

実行時のエラー検出

IDEのデバッグ機能を使用すると、実行時に発生するエラーをリアルタイムで検出し、原因を特定しやすくなります。

以下は未定義の変数を利用したエラー例です。

<?php
// 未定義変数を使用することで実行時エラーが発生する例
echo $undefinedVariable;
?>
Notice: Undefined variable: undefinedVariable in /path/to/script.php on line N

まとめ

この記事では、PHPのエラー処理の各種エラーの種類や設定方法、ログ出力、デバッグツールの利用法を具体例を交えて解説しました。

各項目の説明を通してエラー管理の基礎が明確に理解できる内容です。

ぜひ、今回の知識を活かし、実際の開発現場でエラーチェックの改善にすぐ取り組んでみてください。

関連記事

Back to top button
目次へ