PHPを独学するなら、Udemyの動画講座で
PHP 7も使えて快適な エックスサーバー

「Fatal error: Cannot redeclare」エラーは、同じ名前のユーザー定義関数を何度も定義した場合などに表示されます。典型的なケースは、いくつものファイルをインクルードしているときに、インクルード先のファイルから同じファイルをインクルードしているケースです。

今ひとつわかりづらいかもしれませんが、処理自体に問題がなければ、インクルードに使っているrequireやincludeをrequire_onceやinclude_onceに変更すれば、このエラーメッセージは表示されなくなります。

require_onceやinclude_onceによって、一度読み込んだファイル(関数やクラス)をもう一度読み込まなくなります。以下に、エラーが発生する仕組みと対策をまとめます。

同じファイルをインクルードすると、「Fatal error: Cannot redeclare」と表示されます。

<?php
require("function1.php");
require("function1.php");
?>

このコードは同じファイルでfunction1.phpをインクルードするという明らかなミスですが、実際にはインクルード先function1.phpでインクルードしているfunction2.phpからインクルードしているfunction3.php…をたどっていくと同じファイルfunction1.phpをインクルードしているようなことがあります(外部ライブラリを使用するときなど)。

次のようにrequireをrequire_onceに変更すれば、この問題は解決します。

<?php
require_once("function1.php");
require_once("function1.php");
?>

定番のエラーを予習したい方におすすめの本

同じ名前の関数を定義してしまう「関数の二重定義」はPHPスクリプトの作成時によくあるエラーです。この記事ではインクルード方法の変更で解決しましたが、「function_exists関数」で逃げる方法もあります。これらは定番のエラーなので実践で起きる前に「予習」しておくと、いつか必ず役立ちます。
「Cannot redeclare」を含めてよくあるPHPのエラーパターンを予習しておきたい方にはこの本をおすすめします(私が書いた本ですが)。クイズ風にまとめてあります。暇なときに読んでみてください。
「PHP「直す力」養成ドリル」について詳しくはこちら

スポンサーリンク

こちらもどうぞ

こちらも参考にしてください

関連記事

MySQL

phpMyAdmin

PHPサンプルコード

PHP全般

PHP関数

WordPress

PHPの基礎が身に付いたかチェック!

PHP「直す力」養成ドリル
スポンサーリンク