PHPエラー種別の読み方最初に見る場所を分ける
PHPで真っ白画面や500エラーになると、焦ってコードを大きく書き換えたくなります。でも、最初にやることは修正ではなく、エラー文を分解することです。
Parse error、Fatal error、Warning、Deprecated のどれかで、最初に見る場所は変わります。このページでは、エラー種別、メッセージ、ファイル名、行番号、直前の変更を抜き出して、AIや人へ安全に相談できる形へ整理します。
確認日と対象
確認日: 2026年6月12日。ロリポップやローカル環境で、自作PHPサイトのエラー文を見ている初心者向けです。
WordPress本体やプラグイン固有の管理画面エラー、大規模フレームワーク固有の例外処理は対象外です。まず、PHPが出しているエラー文の種類と、どのファイルの何行目で止まったかを読むためのページです。
作成方針: このページは、実サイト運用、ローカル確認、PHP公式情報、ロリポップ公式情報をもとに整理しています。構成整理にはAIを補助的に使うことがありますが、危険操作、秘密情報、対象範囲、関連リンクは公開前に確認しています。
このページで整理できること
- エラー文の先頭にある種別から、最初に疑う場所を決める
- ファイル名、行番号、直前の変更を分けてメモする
Parse errorとFatal errorの見方を分けるWarning、Notice、Deprecatedを放置してよいか判断する- AI/Codexやサーバー会社へ貼ってよい情報と伏せる情報を分ける
エラー文を読む順番
エラー文は、種類、内容、ファイル、行番号、直前の変更へ分けると、次に見る記事や相談先を選びやすくなります。
先に結論
Parse error は、まず構文チェックと少し上の行を見ます。Fatal error は、読み込み先、関数、class、DB接続など「処理を続けられない原因」を見ます。Warning や Deprecated は表示が続いても、後で本番トラブルにつながることがあります。
本番サイトで display_errors を出しっぱなしにするのは避けます。エラー文をメモしたら、ログで確認する運用に戻してください。
まず抜き出す5つ
エラー文が長くても、最初から全部を理解する必要はありません。次の5つだけ抜き出すと、相談もしやすくなります。
| 見る部分 | 分かること | メモ例 |
|---|---|---|
| エラー種別 | 構文ミスか、致命的停止か、警告か | Parse error / Fatal error |
| メッセージ | 何が読めないか、何が未定義か | Failed opening required |
| ファイル名 | どのPHPで止まったか | /templates/example.php |
| 行番号 | どの周辺を見るか | on line 42 |
| 直前の変更 | 原因候補を広げすぎないための手がかり | include追加、PHPバージョン変更、FTP上書き |
エラー種別の早見表
| 種別 | よくある意味 | 最初に見る場所 | 次に読む記事 |
|---|---|---|---|
Parse error | PHPの文法として読めない | セミコロン、括弧、クォート、直前に編集した行 | PHP真っ白の確認順 |
Fatal error | 処理を続けられず停止した | require、関数名、class、DB接続 | require/include判断 |
Warning | 問題はあるが続く場合がある | ファイル読み込み、権限、配列キー、外部通信 | エラーログ確認 |
Notice | 未定義変数などの注意 | 変数名、配列キー、初期値 | エラーログ確認 |
Deprecated | 今後使えなくなる古い書き方 | PHPバージョン変更後の関数や引数 | PHPバージョン変更後の確認 |
500 Internal Server Error | ブラウザには詳細が出ないサーバー側停止 | PHPログ、.htaccess、PHP設定 | .htaccess 500復旧 |
Parse errorは少し上の行も見る
Parse error は、行番号そのものではなく、少し上の行に原因があることがあります。閉じ忘れた括弧やクォートのせいで、次の行で初めてPHPが読めなくなるためです。
;が抜けていないか{}、()、[]が閉じているか- 文字列の
'や"が閉じているか if、foreach、functionのブロックが閉じているか- AIが出したコードを一部だけ貼って、前後の括弧が崩れていないか
C:\xampp\php\php.exe -l templates/lolipop/example.php
Fatal errorは止まった理由を分ける
Fatal error は、PHPが処理を続けられない状態です。ファイルが読めないのか、関数やclassがないのか、DB接続で止まったのかを分けます。
| よくある文 | 疑う場所 | 最初の行動 |
|---|---|---|
Failed opening required | require 先のパス、FTP上の置き場所 | __DIR__、大文字小文字、アップロード漏れを確認 |
Call to undefined function | 関数定義ファイル、関数名の typo | 関数ファイルを読み込めているか確認 |
Class not found | classファイル、autoload、ファイル名 | 本番にファイルがあるか、読み込み順を確認 |
Cannot redeclare | 同じ関数やclassの重複読み込み | require_once や読み込み場所を確認 |
Uncaught PDOException | DBホスト名、DB名、ユーザー、パスワード | 秘密情報を伏せて接続情報の種類だけ整理 |
WarningやNoticeは消す前に原因を見る
Warning や Notice は、画面が表示されることもあります。ただし、フォーム送信、画像処理、ログ保存、includeの一部が失敗している場合があります。
本番で画面に出て困るからといって、エラー表示だけを消すと原因が残ります。先に、どのファイル、どの行、どの変数やパスで出ているかをメモします。
DeprecatedはPHPバージョン変更後に見る
Deprecated は今すぐ止まらなくても、将来のPHPバージョンで動かなくなる可能性を知らせるものです。ロリポップでPHPバージョンを変更した後に増えた場合は、古い関数や引数の使い方を確認します。
フォーム、管理画面、DB接続など、公開中の機能に出ている場合は後回しにしすぎず、修正範囲を小さく分けて対応します。
本番でエラー表示を出しっぱなしにしない
原因調査ではエラー文が必要ですが、本番サイトにエラーを出しっぱなしにすると、サーバー上のパス、ファイル構成、設定の一部が見えることがあります。
| 状態 | おすすめ | 理由 |
|---|---|---|
| ローカルやテスト環境 | エラーを表示して原因を探す | 構文ミスや行番号を早く見つけるため。 |
| 公開中の本番サイト | ログで確認する | パスや設定情報を見せないため。 |
| 一時的に表示した後 | メモして元に戻す | 調査後の戻し忘れを防ぐため。 |
ロリポップで確認する順番
- 直前に変更したPHPをローカルで
php -lする - 画面のエラー文、またはロリポップ側のPHP設定・エラー表示を確認する
- エラー種別、ファイル名、行番号をメモする
- 本番だけなら、アップロード先、ファイル名の大文字小文字、include/requireのパスを見る
- PHPバージョン変更後なら、
Deprecatedや古い関数を確認する - 調査後は、本番のエラー表示を出しっぱなしにしない
AIやCodexに相談する時のメモ
AIへ貼る時は、サーバーの絶対パス、DB接続情報、FTP情報、APIキーを伏せます。エラーの種類、相対的なファイル位置、直前の変更だけでも切り分けは進められます。
PHPエラーの読み方を相談したいです。
エラー種別:
例: Parse error / Fatal error / Warning / Notice / Deprecated / 500
エラー全文:
エラーに出ているファイル名:
行番号:
直前に変更した作業:
例: include追加 / PHPバージョン変更 / FTP上書き / DB接続追加
ローカルでは動くか:
本番のPHPバージョン:
php -l の結果:
すでに確認したこと:
- ファイルが本番にあるか:
- 大文字小文字:
- include / require のパス:
- display_errorsを戻したか:
サーバーの絶対パス、FTP情報、DB接続情報、APIキー、個人情報は伏せています。
危険な削除や本番のエラー表示出しっぱなしを避けて、最初に見る場所を教えてください。
サーバー会社や制作会社に聞く時のメモ
サーバー側の設定やログの見方を聞く時は、コード全体ではなく、URL、症状、エラー種別、確認済み項目を送ります。
PHPエラーについて確認したいです。
対象URL:
症状:
例: 真っ白 / 500エラー / Fatal error / Warning
エラー種別:
エラー文:
エラーに出ているファイル名と行番号:
直前に変更したこと:
確認済み:
- php -l:
- PHPバージョン:
- display_errors:
- include / require のパス:
- .htaccess変更:
サーバー上の絶対パス、FTP情報、DB接続情報は伏せています。
ロリポップ側で確認すべきPHP設定やログの場所があれば教えてください。
公式情報で確認するところ
この記事では、初心者が原因を探しやすい順番に並べ替えています。細かい定義や設定名は公式情報で確認できます。
| 確認したいこと | 公式情報 | この記事での使い方 |
|---|---|---|
| エラー種別の定義 | PHP公式 エラー定数 | E_ERROR、E_WARNING、E_PARSE、E_DEPRECATED の意味を確認します。 |
| 表示とログの設定 | PHP公式 エラーとログ設定 | display_errors と log_errors の使い分けを確認します。 |
| どのエラーを報告するか | PHP公式 error_reporting | E_ALL など、報告対象の考え方を確認します。 |
| ロリポップのPHP設定 | ロリポップ公式 PHP設定 | PHPバージョン、display_errors、error_reporting の確認に使います。 |