【初心者向け】PHPエラー確認方法

エラーの発生の確認方法

方法(1)ブラウザ上にエラーメッセージを直接表示

下記のコードでdisplay_errorsOnにすることで、ブラウザ上にエラーメッセージが直接表示されます。

※ 本番環境では、セキュリティ上の理由からエラーを画面に表示しないことが推奨されます。

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

1. ini_set('display_errors', 1);

  • 説明: display_errors は、PHPが実行時に発生したエラーをブラウザに表示するかどうかを制御する設定です。
  • : 1 は「On」を意味し、エラーが発生した場合、ブラウザ上にエラーメッセージが表示されるようにします。
  • 使用目的: 開発中にエラーを直ちに確認できるようにするためです。たとえば、コード内で未定義の変数を使用した場合、すぐにそのエラーがブラウザ上で表示されます。

2. ini_set('display_startup_errors', 1);

  • 説明: display_startup_errors は、PHPの起動プロセス中に発生したエラーを表示するかどうかを制御します。
  • : 1 は「On」を意味し、PHPの初期化中に発生したエラー(たとえば、拡張モジュールのロードに失敗した場合など)をブラウザ上に表示します。
  • 使用目的: サーバーの設定や環境が原因でPHPが正常に動作しない場合、その原因を特定するためです。通常、開発環境でのみ使用されます。

3. error_reporting(E_ALL);

  • 説明: error_reporting 関数は、どのレベルのエラーを報告するかを制御します。
  • : E_ALL は、すべてのエラー、警告、通知を報告する設定です。具体的には、致命的なエラーから警告、注意すべき軽微な問題まで、すべての問題を報告します。
  • 使用目的: 開発中に見逃してはいけないすべてのエラーや警告を表示するためです。

方法(2)php.iniの設定を変更する

php.iniファイルで以下の設定を確認・変更します

display_errors = On
error_reporting = E_ALL

方法(3)エラーログの確認

エラーログの確認手順は下記のとおりです

1)php.iniファイルからエラーログファイルの場所を確認

PHPの設定ファイル「php.ini」で指定された場所にログが記録されます。そのためまずphp.iniの確認をします

〇phpinfo()関数でphp.iniの確認
phpinfo()と記述しブラウザでそのファイルにアクセスすればphpinfoが表示されます。)

〇Windows PowerShell(VSCodeのターミナルとか)で手順php.ini の場所を確認する際は下記コマンド

php -i | findstr /c:"Loaded Configuration File"
>> 
Loaded Configuration File => C:\tools\php82\php.ini

2)php.iniを編集

; error_reporting
Default Value: E_ALL ;すべてのエラー、警告、および通知を報告する ことを意味します
;   Development Value: E_ALL
;   Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

log_errors ;エラーが発生した際に、その情報がログファイルに記録されます
error_log = "C:\php_error\php_error.log" ;エラーログの出力先を指定します
;   Default Value: Off
;   Development Value: On
;   Production Value: On

※Dockerで開発している場合

Dockerを使用してPHP開発を行っている場合、実際にはホスト上にphp.iniファイルを作成していない可能性が高いです。一般的にphp.iniのデフォルトの設定を「Docker イメージ」内部に組み込まれています。

→カスタム php.ini ファイルの作成(カスタム設定の追加をします)

(1)

Dockerプロジェクトにphp-custom.iniファイルを作成

log_errors = On
error_log = /var/log/php/php_error.log

(2)

php_erorrフォルダの作成

(3)

docker-compose.yml の修正: web サービスの volumes セクションの修正

services:
  web:
    # ... 他の設定 ...
    volumes:
    # ... 他の設定 ...
      - ./php-custom.ini:/usr/local/etc/php/conf.d/php-custom.ini
      - ./php_error:/var/log/php

(4)

Docker 環境の再起動

docker-compose down
docker-compose up -d

(5)

PHPファイルを実行し、エラーの発生を確認

docker-compose exec web php /var/www/html/[エラー発生しているファイル]

(6)

php_errorフォルダ内に作成されるphp_error.logにエラー内容がはかれます

Xdebug

Xdebugの使用: より高度なデバッグには、Xdebug拡張機能を使用します。これはより詳細な情報を提供しますが、設定が少し複雑です。 ブラウザの開発者ツール: ブラウザの開発者ツールを使用して、ネットワークタブでPHPスクリプトのレスポンスを確認します。