PHP8系で「Warning: Constant xxxxx already defined in」エラーの対応方法
PHP8系&WordPress6.4.3で「Warning: Constant xxxxx already defined in」というエラーログが見受けられた。「/wordpress/wp-content/db.php」「/wordpress/wp-config.php」にて発生している模様。以下に対応方法をメモ。
目次
原因
定数が二重に定義されている(定義済みの定数を新たに定義した)場合に発生するエラーとなる。
対応方法
definedで定数が定義済みかチェックする。具体的には以下のような形。
if( !defined('xxxxxxxxx') ){
define('xxxxxxxxx', true );
}
エラー詳細と定義ファイルについて
/wordpress/wp-content/db.php
エラー詳細
以下エラーログが出力されていた。
Warning: Constant EZSQL_VERSION already defined in /wordpress/wp-content/db.php on line 43 Warning: Constant OBJECT already defined in /wordpress/wp-content/db.php on line 48 Warning: Constant OBJECT_K already defined in /wordpress/wp-content/db.php on line 53 Warning: Constant ARRAY_A already defined in /wordpress/wp-content/db.php on line 58 Warning: Constant ARRAY_N already defined in /wordpress/wp-content/db.php on line 63
定義ファイル
ソースコードを追ってみると「/wordpress/wp-includes/wp-db.php」内で定義されていた。
どうもこちらのページを見てみるとwp-db.phpの方がコアファイルでdb.phpは拡張機能ファイルにあたるらしい。とはいえdb.phpを作成した覚えが無いんだけど……。
/wordpress/wp-config.php
エラー詳細
以下エラーログが出力されていた。
Warning: Constant WP_POST_REVISIONS already defined in /wordpress/wp-config.php on line 91
こちらはリビジョン数を指定するためにwp-config.phpで定義した覚えがある。
定義ファイル
「/wordpress/wp-includes/default-constants.php」内で定義されていた。
注意点
リビジョン数を指定する場合はwp-config.php内の以下部分より上で設定する必要あり。
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
上記部分より下で定義してしまうと先にdefault-constants.php側で定義されてしまうようでリビジョン数が指定できなかった(var_dumpで確認済み)。
所感
WordPressに関してNotice以外のエラーは全て対応できたので満足。尚、WordPressのエラー対応時はwp-config.phpで以下のように設定し、自分のみデバッグモードにすると良い。
if ( $_SERVER["REMOTE_ADDR"] == "自身の接続IPアドレス" ){
define('WP_DEBUG', true);
}else{
define('WP_DEBUG', false);
}
関連記事
-
-
他所のサーバからWordPressの記事情報をpostIDを指定して取得する方法
他所のサーバからWPの記事IDを指定した上で、当該IDのタイトル・アイキャッチ画 ...
-
-
WordPressで構築されたサイト内でAjax通信を行う方法
WordPressで構築されたサイト内でボタンクリック時等にAjax通信を行いた ...
-
-
WordPressのContact Form 7プラグインでユーザーに対して自動返信メールを送信する方法
WordPressのContact Form 7プラグインで実装されたお問い合わ ...
-
-
WordPressの5系から搭載されたブロックエディタ(Gutenberg)を元に戻す方法
WordPressを5系にアップデートしたところ記事投稿ページのエディタが大幅に ...
-
-
WordPressでオリジナルのプラグインを作成する方法
WordPressでオリジナルのプラグインを作成する方法を以下にメモ。 &nbs ...