PHPスクリプトで画面に表示される「fatal error」(フェイタルエラー)とは、処理を停止するほど重大なエラーという意味です。
PHPのエラーには警告や注意を含めて軽いものから重いものまで何種類かありますが、処理を停止するほど重大というのは、今すぐ対応が必要だということです。注意のNOTICEなどのように、とりあえず無視しても大問題にならない軽いエラーとは違います。
そんなfatal errorは、存在しない名前の関数を呼び出したりユーザー定義関数を二重に定義したりすると発生します。処理を続けられないため、エラーメッセージを表示してその時点でプログラムを停止するということです。
以下にFatal errorになるコードを紹介します。
<?php function test() { return TRUE; } function test() { return TRUE; } ?>
実行結果
Fatal error: Cannot redeclare test() (previously declared in test.php:3) in test.php on line 8
言うまでもありませんが、ここでFatal errorになる原因はユーザー定義関数の二重定義です。testという関数が2回定義されています。
Fatal errorを取り除くには
Fatal errorを取り除くヒントはエラーメッセージに書いてあります。たとえば、上記の例では「test.phpの8行目で、test()の再定義はできません(すでにtest.phpの3行目で定義されてますよね)」のようになります。
エラーメッセージを見て解決できる場合は問題ありませんが、ピンとこない場合は注意が必要です。特に、示された行番号はあくまで参考程度に考えた方が無難です。本当の原因と微妙にずれている場合があるので、その行ばかり見ていると問題の原因が特定できません。行番号を参考に、その周辺からエラーメッセージに該当するような記述を探していくのが現実的です。
PHPのエラーについては、以下のページも参考にしてください。