Warning: A non-numeric value encountered in ・・・などと表示される場合
現象について
特定のプラグインをインストールした時に、
Warning : ....(英語の説明)...
と出る場合があります。
コース受講者の方からの報告では、
Warning: A non-numeric value encountered in /home/XXXXXX/XXXXXXX.net/public_html/wp-content/plugins/ninja-forms/includes/Libraries/BackgroundProcessing/classes/wp-background-process.php on line 424
のように、Ninja-forms プラグインで警告表示が出たりするようです。
これは、PHP言語が「プログラムのエラーではないけど、あまり良くはないよ!」という情報を提示している状態です。プラグインを開発するときなどは、Warningが出ないように設計しますが、どうしても発生することがあります。発生する原因は、様々あります。設計が悪い、あるいはPHPのバージョンの違いによるものもあります。
なお、PHP言語は、同様に、Notice(お知らせ)というWarningyりもさらに問題が少ないけど、よくないよというメッセージも出します。これらは、開発時は利用しますが、本番環境(レンタルサーバー)では、表示しないようにPHPを設定します。
解決方法
Step1. PHPを推奨バージョンにする
2021年4月現在、WordPressのPHP推奨バージョンは、PHP7.3, PHP7.4 です。このバージョンのPHPを使うようにレンタルサーバーを設定するべきです。
Step2. エラーメッセージの表示設定を変更する
Warningは、プログラムが終了するほどのことではないので、基本的に「Warningを表示しない設定」をすることで解決できます。
PHP言語の設定を変更するには、お使いのレンタルサーバーのマニュアルを参考にしてください。設定する項目は以下の通りです。
- display_errors を Off (0) にする
あるいは
- error_reporting を E_ALL & ~E_NOTICE & ~E_WARNING とする
ことで解決できます。
なお、Warningについては、プラグイン開発者に連絡をするのが良いです。しっかりと対応してもらうべきです。最新のバージョンにアップすると解決することもありますので、バージョンアップも行ってください。
以下、レンタルサーバーの参考ページを記載しておきます。
- XServerの場合
- XREA(エクスリア)の場合(自分で php.ini ファイルの編集が必要です)
- ロリポップ