広告

【WordPress/PHP】開発環境でエラーメッセージが表示されない場合の各種設定確認

WordPress

WordPressおよびPHPでの開発環境などで、エラーメッセージが表示されない場合、複数の設定が影響している可能性があります。

原因の切り分けが行えるようそれぞれの項目について解説していますので、トラブルシューティングの際に各設定の有効無効について確認してみてください。

エラーを出力するための各種設定

下記では開発環境などでの利用を想定した「エラーを画面上に表示させるための例」をご紹介しています。本番環境などでエラーを非表示にしたい場合はオプションの値を逆(On → Off / True → False などに置き換え)に読み替えて利用してください。

phpの実行エラー出力

php.ini

php.iniファイルのdisplay_errorsオプションでエラーの出力のオンオフを切り替えることができます。

display_errors = On

オプションの値をONにすることでPHPの実行エラーを表示できます。サーバー(コンピュータ)全体で実行されているPHPプログラムが対象となります。

httpd.conf / .htaccess

Webサーバーの設定ファイルのphp_flagオプションでエラー出力のオンオフを切り替えることができます。

php_flag display_errors on

httpd.confに記載することで主にWebサーバで管理する複数サイト共通設定として指定できるほか、.htaccessに記述することで特定のサイトの設定として指定も可能です。

エラーメッセージが表示されない場合はそれぞれのファイルの内容を確認してみてください。

ini_set()関数

実行中のプログラム内でphpのオプションの値を設定することで、エラー出力のオンオフを切り替えることができます。オプション値の設定はphpの内部関数ini_set()を使用します。

ini_set('display_errors', 1);

第2引数は「1」もしくは「’on’」でエラー表示がオンになります。

ini_set('display_errors', 'on');

エラーメッセージが表示されない場合はプログラム内で該当コードを使ってエラー表示がオフにされていないかどうか(ini_set(‘display_errors’, 0);)を確認してみてください。

余談:エラー制御演算子

なお余談ですが、今回のケースとは逆に「すべてのエラーを非表示にしたい場合」は、これらの関数での引数を’off’にするほかに、関数の呼び出しに「@」を使うのがおすすめです。

@ini_set('display_errors', 'off'); //エラーを非表示にする例です。

この「@」はエラー制御演算子と呼ばれるphpの演算子のひとつで、記述された式や関数自体にエラーがあった場合にそのエラーが無視されるというものとなっています。

事前のデバッグを十分に行っておくことが大前提ですが、本番環境などで初期設定の過程などでのエラーが起こってしまうような場合、エラー出力の指定自体にこのエラー制御演算子を使い「@ini_set(‘display_errors’, ‘off’);」のように記述することで、問題発生時のメッセージをより確実に抑制できます。

error_reporting()関数

上記のini_set()関数同様、error_reporting()関数を実行中のプログラム内で使うことで出力するPHPエラーの種類を設定できます。

また、この関数の引数に「0」を渡すと全てのエラー出力がオフになるため、実行エラーが表示されない場合は「error_reporting(0)」の記述がプログラム内にないかどうかを確認してください。

エラー表示をオンにするには引数に表示したいエラーの種類を指定します。下記はすべてのエラーを表示する例です。

// すべてのエラーを表示する
error_reporting(E_ALL);

WordPressの実行エラー出力

WP_DEBUGオプション

WordPressのコンフィグファイル(wp-config.php)内にWP_DEBUGオプションを指定することでWordPressの実行エラーなどを表示することができます。

WordPressがセットアップされたディレクトリにある「wp-config.php」ファイルに、以下を記述することでデバッグモードがオンになりエラーメッセージなどが表示されるようになります。

define('WP_DEBUG', true);

標準のwp-config.phpファイルであればデフォルトでデバッグモード無効「define(‘WP_DEBUG’, false);」の記述があると思いますので、こちらの内容を上記に差し替える必要があります。また、記述の周辺にはコメントで説明が入っているかと思いますが、この1行の記述は

/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', __DIR__ . '/' );
}

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

などと書かれた場所よりも上に記述する必要がありますのでご注意ください。

なお、このWP_DEBUGオプションを有効にすると、WordPressの動作におけるデバッグ用メッセージ表示のほか、前述のPHP設定の有無にかかわらず優先的にPHPのエラー表示が有効になります(なるはず)。

WP_DEBUG_DISPLAYオプション

前述のWP_DEBUGオプションに関連し、デバッグ情報をどのように表示するのかを設定するオプションがあります。こちらの設定によってエラーメッセージが非表示になっている場合があります。

WP_DEBUG_DISPLAYオプションは、WP_DEBUGオプションが有効化されたときに情報を画面上に(HTMLとして)出力するかどうかを指定するオプションです。

define('WP_DEBUG_DISPLAY', true);

このオプションの値がfalseになっている場合、エラーメッセージ(デバッグ情報)は画面上に表示されません。本来このオプションはデバッグ情報を画面に表示せずログファイルなどに出力するWP_DEBUG_LOGオプションなどと組み合わせて使用されますが、このオプションが単独で指定されていた場合エラーメッセージがどこにも出力されない状況が発生します。

WP_DEBUGオプションとあわせて、このWP_DEBUG_DISPLAYオプションが無効になっていないかどうかを確認してみてください。

WordPressでもしこれらのオプションを有効にしてもエラーメッセージが表示されないような場合は、WordPress環境のセットアップなどに問題が発生している可能性などもありますので改めて全体的な設定を見直してみてください。

コメント

タイトルとURLをコピーしました